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

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/

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