ruby-changes:9636
From: tadf <ko1@a...>
Date: Mon, 29 Dec 2008 21:24:12 +0900 (JST)
Subject: [ruby-changes:9636] Ruby:r21176 (trunk): * numeric.c: Infinity.numerator returns self. [experimental]
tadf 2008-12-29 21:23:55 +0900 (Mon, 29 Dec 2008) New Revision: 21176 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21176 Log: * numeric.c: Infinity.numerator returns self. [experimental] * numeric.c: Infinity.denominator returns 1. [experimental] Modified files: trunk/ChangeLog trunk/numeric.c Index: ChangeLog =================================================================== --- ChangeLog (revision 21175) +++ ChangeLog (revision 21176) @@ -1,3 +1,9 @@ +Mon Dec 29 21:22:31 2008 Tadayoshi Funaba <tadf@d...> + + * numeric.c: Infinity.numerator returns self. [experimental] + + * numeric.c: Infinity.denominator returns 1. [experimental] + Mon Dec 29 20:57:14 2008 Yuki Sonoda (Yugui) <yugui@y...> * man/ri.1: new manpage. Index: numeric.c =================================================================== --- numeric.c (revision 21175) +++ numeric.c (revision 21176) @@ -1352,7 +1352,24 @@ return LONG2FIX(val); } +static VALUE +flo_numerator(VALUE num) +{ + double d = RFLOAT_VALUE(num); + if (isinf(d) || isnan(d)) + return num; + return rb_call_super(0, 0); +} +static VALUE +flo_denominator(VALUE num) +{ + double d = RFLOAT_VALUE(num); + if (isinf(d) || isnan(d)) + return INT2FIX(1); + return rb_call_super(0, 0); +} + /* * call-seq: * num.floor => integer @@ -3247,6 +3264,9 @@ rb_define_method(rb_cFloat, "round", flo_round, -1); rb_define_method(rb_cFloat, "truncate", flo_truncate, 0); + rb_define_method(rb_cFloat, "numerator", flo_numerator, 0); + rb_define_method(rb_cFloat, "denominator", flo_denominator, 0); + rb_define_method(rb_cFloat, "nan?", flo_is_nan_p, 0); rb_define_method(rb_cFloat, "infinite?", flo_is_infinite_p, 0); rb_define_method(rb_cFloat, "finite?", flo_is_finite_p, 0); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/