summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorPaolo Bosetti <[email protected]>2012-05-17 22:55:35 -0700
committerPaolo Bosetti <[email protected]>2012-05-17 22:55:35 -0700
commit8027d5120debd78d45df0a352dcc8ee2e092ede2 (patch)
treefed4f5bd9dbce7a0220786df7d2340c5050f1b35 /src
parentf7406435f371c6607e80e58777e76efd08d32dd0 (diff)
parent5760ad7d594b731e17954674dda448dfd4c1b7aa (diff)
downloadmruby-8027d5120debd78d45df0a352dcc8ee2e092ede2.tar.gz
mruby-8027d5120debd78d45df0a352dcc8ee2e092ede2.zip
Merge branch 'tests' of github.com:pbosetti/mruby into tests
Diffstat (limited to 'src')
-rw-r--r--src/math.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/math.c b/src/math.c
index 73bcf5e2a..b0d911573 100644
--- a/src/math.c
+++ b/src/math.c
@@ -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