From: cremno@... Date: 2016-04-05T20:46:39+00:00 Subject: [ruby-core:74823] [Ruby trunk Bug#12249] Math.gamma(-0.0) should return -Infinity 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: