ruby-changes:15260
From: naruse <ko1@a...>
Date: Thu, 1 Apr 2010 14:11:51 +0900 (JST)
Subject: [ruby-changes:15260] Ruby:r27142 (trunk): * util.c (BSD__hdtoa): don't use C99 macros. (FP_NORMAL etc)
naruse 2010-04-01 14:09:10 +0900 (Thu, 01 Apr 2010) New Revision: 27142 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27142 Log: * util.c (BSD__hdtoa): don't use C99 macros. (FP_NORMAL etc) Modified files: trunk/ChangeLog trunk/util.c Index: ChangeLog =================================================================== --- ChangeLog (revision 27141) +++ ChangeLog (revision 27142) @@ -1,3 +1,7 @@ +Thu Apr 1 14:07:51 2010 NARUSE, Yui <naruse@r...> + + * util.c (BSD__hdtoa): don't use C99 macros. (FP_NORMAL etc) + Thu Apr 1 13:30:12 2010 NARUSE, Yui <naruse@r...> * sprintf.c (rb_str_format): support %a format. [ruby-dev:40650] Index: util.c =================================================================== --- util.c (revision 27141) +++ util.c (revision 27142) @@ -3937,27 +3937,26 @@ else *sign = 0; - switch (fpclassify(d)) { - case FP_NORMAL: - *decpt = dexp_get(u) - DBL_ADJ; - break; - case FP_ZERO: - *decpt = 1; - return (nrv_alloc("0", rve, 1)); - case FP_SUBNORMAL: - u.d *= 5.363123171977039e+154 /* 0x1p514 */; - *decpt = dexp_get(u) - (514 + DBL_ADJ); - break; - case FP_INFINITE: - *decpt = INT_MAX; - return (nrv_alloc(INFSTR, rve, sizeof(INFSTR) - 1)); - default: /* FP_NAN or unrecognized */ - *decpt = INT_MAX; - return (nrv_alloc(NANSTR, rve, sizeof(NANSTR) - 1)); + if (isinf(d)) { /* FP_INFINITE */ + *decpt = INT_MAX; + return (nrv_alloc(INFSTR, rve, sizeof(INFSTR) - 1)); } + else if (isnan(d)) { /* FP_NAN */ + *decpt = INT_MAX; + return (nrv_alloc(NANSTR, rve, sizeof(NANSTR) - 1)); + } + else if (d == 0.0) { /* FP_ZERO */ + *decpt = 1; + return (nrv_alloc("0", rve, 1)); + } + else if (dexp_get(u)) { /* FP_NORMAL */ + *decpt = dexp_get(u) - DBL_ADJ; + } + else { /* FP_SUBNORMAL */ + u.d *= 5.363123171977039e+154 /* 0x1p514 */; + *decpt = dexp_get(u) - (514 + DBL_ADJ); + } - /* FP_NORMAL or FP_SUBNORMAL */ - if (ndigits == 0) /* dtoa() compatibility */ ndigits = 1; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/