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

ruby-changes:12241

From: akr <ko1@a...>
Date: Thu, 2 Jul 2009 05:40:32 +0900 (JST)
Subject: [ruby-changes:12241] Ruby:r23929 (trunk): * time.c (num_exact): use to_r for T_FLOAT.

akr	2009-07-02 05:38:57 +0900 (Thu, 02 Jul 2009)

  New Revision: 23929

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23929

  Log:
    * time.c (num_exact): use to_r for T_FLOAT.

  Modified files:
    trunk/ChangeLog
    trunk/time.c

Index: time.c
===================================================================
--- time.c	(revision 23928)
+++ time.c	(revision 23929)
@@ -154,55 +154,8 @@
         break;
 
       case T_FLOAT:
-      {
-        double d = NUM2DBL(v);
-        int exp;
-        static long r = 0;
-        static int n = 0;
-        if (r == 0) {
-            long rr = FLT_RADIX;
-            int nn = 1;
-            while (rr < FIXNUM_MAX / FLT_RADIX) {
-                rr *= FLT_RADIX;
-                nn++;
-            }
-            n = nn;
-            r = rr;
-        }
-        d = frexp(d, &exp);
-        v = INT2FIX(0);
-        while (d != 0) {
-            long u;
-            exp -= n;
-            d *= r;
-            v = mul(v, LONG2FIX(r));
-            u = (long)d;
-            d -= u;
-            v = add(v, LONG2FIX(u));
-        }
-        if (exp < 0) {
-            VALUE w;
-            w = INT2FIX(1);
-            if (FLT_RADIX == 2)
-                w = lshift(w, INT2FIX(-exp));
-            else
-                while (exp) {
-                    w = mul(w, INT2FIX(FLT_RADIX));
-                    exp++;
-                }
-            v = quo(v, w);
-        }
-        else {
-            if (FLT_RADIX == 2)
-                v = lshift(v, INT2FIX(exp));
-            else
-                while (exp) {
-                    v = mul(v, INT2FIX(FLT_RADIX));
-                    exp--;
-                }
-        }
+        v = rb_convert_type(v, T_RATIONAL, "Rational", "to_r");
         break;
-      }
 
       case T_NIL:
         goto typeerror;
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 23928)
+++ ChangeLog	(revision 23929)
@@ -1,3 +1,7 @@
+Thu Jul  2 05:37:38 2009  Tanaka Akira  <akr@f...>
+
+	* time.c (num_exact): use to_r for T_FLOAT.
+
 Thu Jul  2 05:15:54 2009  Tanaka Akira  <akr@f...>
 
 	* time.c (quo): return an integer if possible.

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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