summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorPaolo Bosetti <[email protected]>2012-05-17 23:50:56 -0700
committerPaolo Bosetti <[email protected]>2012-05-17 23:50:56 -0700
commitd1f6f504d52ced12a9d58aa98b7ee158feef26ee (patch)
treef5d41b0b2ceed07e306b7edf57e8fe529fc8c46a
parent8027d5120debd78d45df0a352dcc8ee2e092ede2 (diff)
downloadmruby-d1f6f504d52ced12a9d58aa98b7ee158feef26ee.tar.gz
mruby-d1f6f504d52ced12a9d58aa98b7ee158feef26ee.zip
Added some tests for Math module. Some refactoring in math.c; numeric tolerance exported as Math::TOLERANCE and also used for fuzzy tests in mrbtest suite
-rw-r--r--test/t/math.rb32
1 files changed, 24 insertions, 8 deletions
diff --git a/test/t/math.rb b/test/t/math.rb
index eb4cebabc..a9c7e7fb7 100644
--- a/test/t/math.rb
+++ b/test/t/math.rb
@@ -1,6 +1,9 @@
##
# Math Test
+##
+# Performs fuzzy check for equality on methods returning floats
+# on the basis of the Math::TOLERANCE constant.
def check(a,b)
a = a.to_f
b = b.to_f
@@ -11,9 +14,8 @@ def check(a,b)
end
end
-
assert('Math.sin 0') do
- check(Math.sin(0), 1)
+ check(Math.sin(0), 0)
end
assert('Math.sin PI/2') do
@@ -25,12 +27,13 @@ assert('Fundamental trig identities') do
result = true
N = 15
N.times do |i|
- a = Math::PI / N * i
- s = Math.sin(a)
- c = Math.cos(a)
- t = Math.tan(a)
- result &= check(s, Math.cos(Math::PI / 2 - a))
- result &= check(t, 1 / Math.tan(Math::PI / 2 - a))
+ a = Math::PI / N * i
+ ca = Math::PI / 2 - a
+ s = Math.sin(a)
+ c = Math.cos(a)
+ t = Math.tan(a)
+ result &= check(s, Math.cos(ca))
+ result &= check(t, 1 / Math.tan(ca))
result &= check(s ** 2 + c ** 2, 1)
result &= check(t ** 2 + 1, (1/c) ** 2)
result &= check((1/t) ** 2 + 1, (1/s) ** 2)
@@ -100,3 +103,16 @@ assert('Math.hypot') do
check(Math.hypot(3, 4), 5.0)
end
+assert('Math.frexp 1234') do
+ n = 1234
+ fraction, exponent = Math.frexp(n)
+ check(Math.ldexp(fraction, exponent), n)
+end
+
+assert('Math.erf 1') do
+ check(Math.erf(1), 0.842700792949715)
+end
+
+assert('Math.erfc 1') do
+ check(Math.erfc(1), 0.157299207050285)
+end