summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--missing/lgamma_r.c2
-rw-r--r--test/ruby/test_math.rb3
3 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 612dc5802b..b925ebcf61 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu Mar 6 14:46:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/lgamma_r.c (loggamma): return 0 for 1 and 2.
+
+ * test/ruby/test_math.rb: accept errors by functions under missing/.
+
Thu Mar 6 14:29:44 2008 NARUSE, Yui <naruse@ruby-lang.org>
* transcode.c (rb_str_transcode_bang): set coderange.
diff --git a/missing/lgamma_r.c b/missing/lgamma_r.c
index ab6c28294a..ae93d078cb 100644
--- a/missing/lgamma_r.c
+++ b/missing/lgamma_r.c
@@ -34,6 +34,8 @@ loggamma(double x) /* the natural logarithm of the Gamma function. */
{
double v, w;
+ if (x == 1.0 || x == 2.0) return 0.0;
+
v = 1;
while (x < N) { v *= x; x++; }
w = 1 / (x * x);
diff --git a/test/ruby/test_math.rb b/test/ruby/test_math.rb
index 60fc591a65..67f5e86e42 100644
--- a/test/ruby/test_math.rb
+++ b/test/ruby/test_math.rb
@@ -2,7 +2,8 @@ require 'test/unit'
class TestMath < Test::Unit::TestCase
def check(a, b)
- assert_in_delta(a, b, Float::EPSILON * 4)
+ err = [Float::EPSILON * 4, [a.abs, b.abs].max * Float::EPSILON * 256].max
+ assert_in_delta(a, b, err)
end
def test_atan2