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/