Commit 8027d512 authored by Paolo Bosetti's avatar Paolo Bosetti

Merge branch 'tests' of github.com:pbosetti/mruby into tests

parents f7406435 5760ad7d
......@@ -10,6 +10,8 @@
#define domain_error(msg) \
mrb_raise(mrb, E_RANGE_ERROR, "Numerical argument is out of domain - " #msg);
#define MATH_TOLERANCE 1E-12
/* math functions not provided under Microsoft Visual C++ */
#ifdef _MSC_VER
#define asinh(x) log(x + sqrt(pow(x,2.0) + 1))
......@@ -25,7 +27,7 @@ erfc(double x);
** Implementations of error functions
** credits to http://www.digitalmars.com/archives/cplusplus/3634.html
*/
#define REL_ERROR 1E-12
/* Implementation of Error function */
double
erf(double x)
......@@ -45,7 +47,7 @@ erf(double x)
term *= xsqr/j;
sum += term/(2*j+1);
++j;
} while (fabs(term)/sum > REL_ERROR);
} while (fabs(term)/sum > MATH_TOLERANCE);
return two_sqrtpi*sum;
}
......@@ -77,7 +79,7 @@ erfc(double x)
n += 0.5;
q1 = q2;
q2 = b/d;
} while (fabs(q1-q2)/q2 > REL_ERROR);
} while (fabs(q1-q2)/q2 > MATH_TOLERANCE);
return one_sqrtpi*exp(-x*x)*q2;
}
......@@ -610,6 +612,7 @@ mrb_init_math(mrb_state *mrb)
struct RClass *mrb_math;
mrb_math = mrb_define_module(mrb, "Math");
mrb_define_const(mrb, mrb_math, "TOLERANCE", mrb_float_value(MATH_TOLERANCE));
#ifdef M_PI
mrb_define_const(mrb, mrb_math, "PI", mrb_float_value(M_PI));
#else
......
......@@ -22,7 +22,7 @@ end
# iso : The ISO reference code of the feature
# which will be tested by this
# assertion
def assert(str = 'Assertion failed', iso = '')
def assert(str = 'Assertion failed', iso = 'No ISO')
begin
if(!yield)
$asserts.push([str, iso])
......
##
# Math Test
MATH_TOLERANCE = 1E-12
def check(a,b)
a = a.to_f
b = b.to_f
if a.finite? and b.finite?
(a-b).abs < MATH_TOLERANCE
(a-b).abs < Math::TOLERANCE
else
true
end
......@@ -14,7 +13,7 @@ end
assert('Math.sin 0') do
check(Math.sin(0), 0)
check(Math.sin(0), 1)
end
assert('Math.sin PI/2') do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment