[#7631] 1.3 to 1.4 — Katsuyuki Komatsu <komatsu@...>

小松です。

26 messages 1999/08/12
[#7632] Re: 1.3 to 1.4 — matz@... (Yukihiro Matsumoto) 1999/08/12

まつもと ゆきひろです

[#7634] Re: 1.3 to 1.4 — Katsuyuki Komatsu <komatsu@...> 1999/08/13

小松です。

[#7636] Re: 1.3 to 1.4 — matz@... (Yukihiro Matsumoto) 1999/08/13

まつもと ゆきひろです

[#7638] cvs HEAD (Re: Re: 1.3 to 1.4) — EGUCHI Osamu <eguchi@...> 1999/08/13

えぐち@エスアンドイーです。

[#7647] Re: cvs HEAD (Re: Re: 1.3 to 1.4) — matz@... (Yukihiro Matsumoto) 1999/08/13

まつもと ゆきひろです

[#7641] Re: [ruby-ext:00382] New coerce scheme — keiju@... (石塚圭樹)

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

26 messages 1999/08/13

[ruby-dev:7585] Re: NaN#<=>

From: EGUCHI Osamu <eguchi@...>
Date: 1999-08-09 16:01:12 UTC
List: ruby-dev #7585
えぐち@エスアンドイー です。

>>> In message [ruby-dev:7579] Re: NaN#<=>
    On Mon, 9 Aug 1999 12:17:49 +0900, gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro) said:

gotoken> ごとけんです
gotoken> 
gotoken> In message "[ruby-dev:7578] Re: NaN#<=>"
gotoken>     on 99/08/09, EGUCHI Osamu <eguchi@shizuokanet.ne.jp> writes:
gotoken> 
gotoken> >影響を受けるとしたら、いままでも NaN の影響を「比較が正しくない」
gotoken> >という形で受けていたのだから、変更を躊躇する理由はないですね。
gotoken> 
gotoken> 僕も例外に賛成です。
gotoken> FloatDomainError が適任だと思います。

どうやら、『Float#<=> で NaN に遭遇したら、例外を raise する』で、
みなさんの意見が一致したようなので、パッチを作りました。

  % ./ruby -e 'p [1,5,2,1.0%0.0,4,3].sort'
  /var/tmp//rbp45401:1:in `<=>': NaN (FloatDomainError)
	  from /var/tmp//rbp45401:1:in `<=>'
	  from /var/tmp//rbp45401:1:in `sort'
	  from /var/tmp//rbp45401:1

のような実行結果になります。

NaN と決めてかかっていますが、
多分 NaN 以外に該当する物は、ないと思います。

	えぐち

Index: numeric.c
===================================================================
RCS file: /usr/home/eguchi/cvs.netlab.co.jp//ruby/numeric.c,v
retrieving revision 1.1.1.3.2.11
diff -d -u -r1.1.1.3.2.11 numeric.c
--- numeric.c	1999/07/15 07:59:48	1.1.1.3.2.11
+++ numeric.c	1999/08/09 15:44:20
@@ -443,7 +443,8 @@
     }
     if (a == b) return INT2FIX(0);
     if (a > b) return INT2FIX(1);
-    return INT2FIX(-1);
+    if (a < b) return INT2FIX(-1);
+    rb_raise(rb_eFloatDomainError, "NaN");
 }
 
 static VALUE

In This Thread