Issue #12249 has been updated by cremno phobia.


Regarding `Math.lgamma(-0.0)` (r54494,r54495):

It's actually caused by the `lgamma_r()` fallback implementation. A non-invasive fix (I don't think adding `if(x==0)` would be worthwhile):

~~~diff
diff --git a/missing/lgamma_r.c b/missing/lgamma_r.c
index 6d2f38f..01066d2 100644
--- a/missing/lgamma_r.c
+++ b/missing/lgamma_r.c
@@ -66,7 +66,7 @@ lgamma_r(double x, int *signp)
         double i, f, s;
         f = modf(-x, &i);
         if (f == 0.0) { /* pole error */
-            *signp = 1;
+            *signp = signbit(x) ? -1 : 1;
             errno = ERANGE;
             return HUGE_VAL;
         }
~~~

----------------------------------------
Bug #12249: Math.gamma(-0.0) should return -Infinity
https://bugs.ruby-lang.org/issues/12249#change-57949

* Author: Benoit Daloze
* Status: Closed
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32]
* Backport: 2.1: REQUIRED, 2.2: REQUIRED, 2.3: REQUIRED
----------------------------------------
On Windows, Math.gamma(-0.0) returns +Infinity instead of -Infinity,
which is the correct result according to tgamma(3) and the behavior on other platforms.

Is this OK to fix in Ruby?
There is already a similar fix for #10642.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>