[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]