ruby-changes:3921
From: ko1@a...
Date: Sat, 9 Feb 2008 11:11:19 +0900 (JST)
Subject: [ruby-changes:3921] akr - Ruby:r15411 (trunk): * missing/xlgamma_r.c (lgamma_r): return HUGE_VAL for non-positive
akr 2008-02-09 11:10:57 +0900 (Sat, 09 Feb 2008)
New Revision: 15411
Modified files:
trunk/ChangeLog
trunk/missing/lgamma_r.c
Log:
* missing/xlgamma_r.c (lgamma_r): return HUGE_VAL for non-positive
integers.
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/missing/lgamma_r.c?r1=15411&r2=15410&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15411&r2=15410&diff_format=u
Index: ChangeLog
===================================================================
--- ChangeLog (revision 15410)
+++ ChangeLog (revision 15411)
@@ -1,3 +1,8 @@
+Sat Feb 9 11:09:26 2008 Tanaka Akira <akr@f...>
+
+ * missing/xlgamma_r.c (lgamma_r): return HUGE_VAL for non-positive
+ integers.
+
Sat Feb 9 10:03:07 2008 Tanaka Akira <akr@f...>
* string.c (rb_str_new4): copy encoding from orig, instead of shared
Index: missing/lgamma_r.c
===================================================================
--- missing/lgamma_r.c (revision 15410)
+++ missing/lgamma_r.c (revision 15411)
@@ -12,6 +12,7 @@
gamma.c -- Gamma function
***********************************************************/
#include <math.h>
+#include <errno.h>
#define PI 3.14159265358979324 /* $\pi$ */
#define LOG_2PI 1.83787706640934548 /* $\log 2\pi$ */
#define LOG_PI 1.14472988584940017 /* $\log_e \pi$ */
@@ -47,13 +48,13 @@
double
lgamma_r(double x, int *signp)
{
- if (x < 0) {
+ if (x <= 0) {
double i, f, s;
f = modf(-x, &i);
- if (f == 0.0) {
- static const double zero = 0.0;
+ if (f == 0.0) { /* pole error */
*signp = 1;
- return 1.0/zero;
+ errno = ERANGE;
+ return HUGE_VAL;
}
*signp = (fmod(i, 2.0) != 0.0) ? 1 : -1;
s = sin(PI * f);
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/