[#6862] Re: http_get.rb — 青山 和光 <PXN11625@...>

In-Reply-To: [ruby-list:6844] Re: http_get.rb

15 messages 1998/03/01

[#6906] ruby's Icon ? — 藤本尚邦 / FUJIMOTO Hisakuni <hisa@...>

藤本です、こんにちは。

25 messages 1998/03/03
[#6907] Re: ruby's Icon ? — matz@... (Yukihiro Matsumoto) 1998/03/03

まつもと ゆきひろです

[#6908] Re: ruby's Icon ? — 藤本尚邦 / FUJIMOTO Hisakuni <hisa@...> 1998/03/03

藤本です、こんにちは。

[#6911] Re: ruby's Icon ? — OZAWA Sakuro <ozawa@...> 1998/03/03

小澤さくです。

[#6912] Re: ruby's Icon ? — 藤本尚邦 / FUJIMOTO Hisakuni <hisa@...> 1998/03/03

藤本です、こんにちは。

[#6914] Re: ruby's Icon ? — 藤本尚邦 / FUJIMOTO Hisakuni <hisa@...> 1998/03/03

藤本です、こんばんは。

[#6918] manual 1.18b index — WATANABE Tetsuya <tetsu@...>

ruby-man-1.1b8 で、name タグがついているものを拾い集めて

17 messages 1998/03/04
[#6921] Re: manual 1.18b index — matz@... (Yukihiro Matsumoto) 1998/03/04

まつもと ゆきひろです

[#6954] Re: ruby's Icon ? — nosuzuki@... (Norio Suzuki)

こんばんは。鈴木教郎です。

18 messages 1998/03/04
[#6964] Re: ruby's Icon ? — matz@... (Yukihiro Matsumoto) 1998/03/05

まつもと ゆきひろです

[#7023] infinity — Tadayoshi Funaba <tadf@...>

ふなばです。

41 messages 1998/03/09
[#7029] Re: infinity — shugo@... (Shugo Maeda) 1998/03/09

前田です。

[#7033] Re: infinity — keiju@... (石塚圭樹 ) 1998/03/09

けいじゅ@日本ラショナルソフトウェアです.

[#7041] Re: infinity — Kazuhisa YANAGAWA <katze@...> 1998/03/10

In message <199803091741.CAA05774.keiju@cupmail0.rational.com>

[#7048] Re: infinity — keiju@... (Keiju ISHITSUKA) 1998/03/10

けいじゅ@日本ラショナルソフトウェアです.

[#7049] Re: infinity — matz@... (Yukihiro Matsumoto) 1998/03/10

まつもと ゆきひろです

[#7051] Re: infinity — keiju@... (石塚圭樹 ) 1998/03/10

けいじゅ@日本ラショナルソフトウェアです.

[#7054] Re: infinity — matz@... (Yukihiro Matsumoto) 1998/03/10

まつもと ゆきひろです

[#7050] Re: infinity — Kazuhisa YANAGAWA <katze@...> 1998/03/10

In message <199803100359.MAA08628.keiju@cupmail0.rational.com>

[#7259] Socket#shutdown — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

16 messages 1998/03/28
[#7260] Re: Socket#shutdown — matz@... (Yukihiro Matsumoto) 1998/03/28

まつもと ゆきひろです

[#7265] Re: Socket#shutdown — keiju@... (石塚圭樹 ) 1998/03/29

けいじゅ@日本ラショナルソフトウェアです.

[ruby-list:7029] Re: infinity

From: shugo@... (Shugo Maeda)
Date: 1998-03-09 16:59:40 UTC
List: ruby-list #7029
前田です。

In message "[ruby-list:7023] infinity"
Tadayoshi Funaba <tadf@kt.rim.or.jp> wrote:

|ボツになりそうなんで、いわないでおこうかと思ったんですが、無限大って表
|現できたら便利だと思うんですけど、どうですか。

僕も前に欲しいと思ったことがあるのですが、忘れていました(^^;

ちょっとパッチ(というほど大袈裟なものではないですが)を書いてみました。

Float::INFINITY
Float::NaN

という二つの定数と、

Float#infinite?
Float#nan?
Float#finite?

という三つのメソッドを定義しています。

-- 
前田 修吾

--- numeric.c.orig	Tue Mar 10 00:49:47 1998
+++ numeric.c	Tue Mar 10 01:39:36 1998
@@ -168,7 +168,7 @@
     char buf[32];
 
     sprintf(buf, "%g", RFLOAT(flt)->value);
-    if (strchr(buf, '.') == 0) {
+    if (finite(RFLOAT(flt)->value) && strchr(buf, '.') == 0) {
 	int len = strlen(buf);
 	char *ind = strchr(buf, 'e');
 
@@ -254,20 +254,12 @@
 flo_div(x, y)
     VALUE x, y;
 {
-    INT f_y;
-    double d;
-
     switch (TYPE(y)) {
       case T_FIXNUM:
-	f_y = FIX2INT(y);
-	if (f_y == 0) num_zerodiv();
-	return float_new(RFLOAT(x)->value / (double)f_y);
+	return float_new(RFLOAT(x)->value / (double)FIX2INT(y));
       case T_BIGNUM:
-	d = big2dbl(y);
-	if (d == 0.0) num_zerodiv();
-	return float_new(RFLOAT(x)->value / d);
+	return float_new(RFLOAT(x)->value / big2dbl(y));
       case T_FLOAT:
-	if (RFLOAT(y)->value == 0.0) num_zerodiv();
 	return float_new(RFLOAT(x)->value / RFLOAT(y)->value);
       default:
 	return num_coerce_bin(x, y);
@@ -443,6 +435,37 @@
 }
 
 static VALUE
+flo_is_infinite(flt)
+    VALUE flt;
+{
+    int ret = isinf(RFLOAT(flt)->value);
+    if (ret)
+	return INT2FIX(ret);
+    else
+	return FALSE;
+}
+
+static VALUE
+flo_is_nan(flt)
+    VALUE flt;
+{
+    if (isnan(RFLOAT(flt)->value))
+	return TRUE;
+    else
+	return FALSE;
+}
+
+static VALUE
+flo_is_finite(flt)
+    VALUE flt;
+{
+    if (finite(RFLOAT(flt)->value))
+	return TRUE;
+    else
+	return FALSE;
+}
+
+static VALUE
 to_integer(val)
     VALUE val;
 {
@@ -1145,6 +1168,8 @@
     rb_define_method(cFixnum, "times", fix_dotimes, 0);
 
     cFloat  = rb_define_class("Float", cNumeric);
+    rb_define_const(cFloat, "INFINITY", float_new(1.0 / 0.0));
+    rb_define_const(cFloat, "NaN", float_new(0.0 / 0.0));
 
     rb_undef_method(CLASS_OF(cFloat), "new");
 
@@ -1164,4 +1189,7 @@
     rb_define_method(cFloat, "to_i", flo_to_i, 0);
     rb_define_method(cFloat, "to_f", flo_to_f, 0);
     rb_define_method(cFloat, "abs", flo_abs, 0);
+    rb_define_method(cFloat, "infinite?", flo_is_infinite, 0);
+    rb_define_method(cFloat, "nan?", flo_is_nan, 0);
+    rb_define_method(cFloat, "finite?", flo_is_finite, 0);
 }

In This Thread