[#4566] [Q] internal type of klass — gotoken@... (GOTO Kentaro)
ごとけんです
[#4576] Ruby ruby-1.3.1-990201 — matz@... (Yukihiro Matsumoto)
Ruby ruby-1.3.1-990201 is out, check out:
[#4603] call for finite/isnan testers — gotoken@... (GOTO Kentaro)
ごとけんです
稲葉です。
ごとけんです
稲葉です。
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
わたなべです.
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
まつもと ゆきひろです
ごとけんです
Regard to "[ruby-dev:4788] Re: compare to NaN (Re: Re: call for finite/isnan testers)"
ごとけんです
Regard to "[ruby-dev:4867] Re: compare to NaN (Re: Re: call for finite/isnan testers)"
えぐち@エスアンドイー です。
Regard to "[ruby-dev:4875] Re: compare to NaN (Re: Re: call for finite/isnan testers)"
えぐち@エスアンドイー です。
Regard to "[ruby-dev:4901] Re: compare to NaN (Re: Re: call for finite/isnan testers)"
えぐち@エスアンドイー です。
Regard to "[ruby-dev:4934] Re: compare to NaN (Re: Re: call for finite/isnan testers)"
えぐち@エスアンドイー です。
ふなばです。
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです.
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
まつもと ゆきひろです
まつもと ゆきひろです
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
ごとけんです
In message <199902102105.GAA28213@hanare00.math.sci.hokudai.ac.jp>
えぐち@エスアンドイー です。
ごとけんです
えぐち@エスアンドイー です。
ごとけんです
えぐち@エスアンドイー です。
Regard to "[ruby-dev:5023] Re: [PATCH] configure w/ isinf() (Re: 10e9999.to_i)"
えぐち@エスアンドイー です。
えぐち @エスアンドイーです。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
[#4614] Re: cookie on cgi-lib.rb — Wakou Aoyama <wakou@...>
青山です。
五十嵐です。
青山です。
まつもと ゆきひろです
高橋です。なつかしい話題が。
前田です。
前田です。
前田です。
五十嵐です。
青山です。
五十嵐です。
青山です。
[#4615] HTML generator — Wakou Aoyama <wakou@...>
青山です。
原です。
青山です。
原です。
青山です。
原です。
前田です。
安達@沖データと申します。
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
原です。
原です。
原です。
前橋です。
[#4619] Why automake+libtool? (Re: --enable-shared/BSD) — Motoyuki Kasahara <m-kasahr@...>
笠原です。
まつもと ゆきひろです
笠原です。
わたなべです.
笠原です。
まつもと ゆきひろです
笠原です。
[#4640] Ruby 1.3.1-990203 — matz@... (Yukihiro Matsumoto)
Ruby 1.3.1-990203 is out, check out:
ごとけんです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
[#4727] [REQ] 2進数整数リテラル — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイーです。
ごとけんです
まつもと ゆきひろです
えぐち@エスアンドイー です。
[#4755] Re: call for finite/isnan testers — KIMURA Koichi <kbk@...>
[#4767] [BUG] gsub?, Hash? — Wakou Aoyama <wakou@...>
青山です。
[#4825] Backslash(EOL) in comment — WATANABE Hirofumi <eban@...>
わたなべです.
まつもと ゆきひろです
青山です。
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
[#4829] Re: to_i,to_s の素朴な疑問 — HQss_YasuiS/hq_ss@...
[#4837] man Precision — gotoken@... (GOTO Kentaro)
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
[#4851] Re: port NetBSD/ alpha 1.3I — SHIROYAMA Takayuki <psi@...>
[#4852] Re: module Precision — "豊福" <toyofuku@...>
豊福@パパイヤです。
[#4853] Integer#format — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
In message <E10Ep01-00009q-00@ev.netlab.co.jp>
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
ごとけんです
[#4893] Ruby 1.3.1-990209 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.1-990209 is out, check out:
青山です。
まつもと ゆきひろです
立石です。
[#4900] Ruby 1.3.1-990209 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.1-990209 had serious flaw in installer. I re-packedaged it.
えぐち@エスアンドイー です。
[#4929] Re: module Precision — "豊福" <toyofuku@...>
豊福@パパイヤです。
[#4950] parse error "and" — Koji Arai <JCA02266@...>
新井です。
えぐち@エスアンドイー です。
まつもと ゆきひろです
新井です。
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
まつもと ゆきひろです
[#4970] Re: to_i,to_s の素朴な疑問 — HQss_YasuiS/hq_ss@...
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
安井、改め moochan です。よろしく。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
前田です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
[#4971] Ruby 1.3.1-990210 — Yukihiro Matsumoto <matz@...>
It's about time for daily Ruby delivery. ;-)
立石です。
[#5010] #{\n}\\ in heredoc — Koji Arai <JCA02266@...>
新井です。
[#5083] [req] cgi-lib NPH support — Shugo Maeda <shugo@...>
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
前田です。
青山です。
[#5086] [FIX] checking whether [sg]etpgrp takes no argument — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイーです。
[#5099] [PATCH] infinite loop of inspect (ruby-1.2.2) — gotoken@... (GOTO Kentaro)
ごとけんです
[#5119] Ruby 1.3.1-990215 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.1-990215 is out, check out:
渡辺哲也です。
渡辺哲也です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
渡辺哲也です。
えぐち@エスアンドイー です。
[#5141] [req] rb_setenv() — Shugo Maeda <shugo@...>
前田です。
[#5176] mod_ruby 0.0.4 — Shugo Maeda <shugo@...>
前田です。
[#5215] Re: a genericity — toyofuku@...
豊福@パパイヤです。
ごとけんです
原です。
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
原です。
ごとけんです
原です。
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
まつもと ゆきひろです
[#5264] Re: ruby 1.2.3 released — Jun Adachi <adachi@...>
安達@沖データと申します。
[#5270] Prec.html — gotoken@... (GOTO Kentaro)
ごとけんです
[#5287] Time class — Tadayoshi Funaba <tadf@...>
ふなばです。
まつもと ゆきひろです
ふなばです。
まつもと ゆきひろです
[#5395] Subseq of Array — Inaba Hiroto <inaba@...>
稲葉です.
青山です。
青山です。
福間@福岡 です。
自己フォローです。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
青山です。
ふなばです。
青山です。
ふなばです。
青山です。
原です。
青山です。
原です。
ふなばです。
青山です。
ふなばです。
青山です。
ふなばです。
青山です。
ふなばです。
青山です。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
ふなばです。
青山です。
えぐち@エスアンドイー です。
青山です。
けいじゅ@日本ラショナルソフトウェアです.
ふなばです。
青山です。
青山です。
青山です。
青山です。
まつもと ゆきひろです
原です。
青山です。
原です。
青山です。
ふなばです。
青山です。
[#5455] io_write — IKARASHI Akira <ikarashi@...>
五十嵐です。
[#5527] Re: [ruby-list:12268] Re: It wants to install mon_ruby — moochan <moochan@...>
moochan です。
moochan です.
moochan です.
わたなべです.
[#5558] [BUG] module_eval — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#5564] Ruby 1.3.1-990224 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.1-990224 is out, check out:
渡辺哲也です。
えぐち@エスアンドイー です。
わたなべです.
ふなばです。
[#5570] Hash.new — gotoken@... (GOTO Kentaro)
ごとけんです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
[#5575] Re: a genericity — "豊福" <toyofuku@...>
豊福@パパイヤです。
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
えぐち@エスアンドイー です。
ごとけんです
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
[#5601] Re: Hash.new — Inaba Hiroto <inaba@...>
稲葉です.
稲葉です。
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
[#5641] [REQ] mod_ruby ENV['HTTP_CONNECTION'] — Wakou Aoyama <wakou@...>
青山です。
[#5676] Ruby 1.3.1-990225 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.1-990225 is out, check out:
[#5725] VERSION_DATE — Wakou Aoyama <wakou@...>
青山です。
[#5726] SERVER_SOFTWARE (mod_ruby) — Wakou Aoyama <wakou@...>
青山です。
[#5752] irb on ruby-1.4 — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
[#5776] Precision in Mathematica (Re: Bigfloat) — gotoken@... (GOTO Kentaro)
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
[ruby-dev:4760] compare to NaN (Re: Re: call for finite/isnan testers)
えぐち@エスアンドイー です。
>>> On Fri, 5 Feb 1999 00:32:15 +0900, えぐち said:
...
えぐち> Ruby の Float のメソッド <=> も NaN 対応が必要でしょう。
えぐち> 具体的には、NaN との大小判別例外を raise するのが良いと思います。
えぐち>
えぐち> えぐち
えぐち>
えぐち> #もっか numberic.c と格闘中につき、今回はパッチなし ^^)l
Subject: [ruby-list:7029] Re: infinity
From: shugo@po.aianet.ne.jp (Shugo Maeda)
To: ruby-list@netlab.co.jp (ruby mailing list)
Date: Tue, 10 Mar 1998 01:59:40 +0900
を参考に、INFINITY と NaN の扱いのパッチを作りました。
* Float::INFINITY の追加
* Float::NaN の追加
* NaN との大小判別例外 NaNCompareError クラスの追加
* FLoat#infinite? の追加(Inf:正数, -Inf:負数、otherwise false)
* FLoat#nan? の追加(また x == Float::NaN は常に偽)
* FLoat#finte? の追加(Inf, -Inf or NaN:false, otherwise true)
* FreeBSD 環境での浮動小数点関連のトラップの抑止(main.c)
実行例
triton2.eguchi:83% ./ruby -e 'p ((0.0/0.0))'
NaN
triton2.eguchi:84% ./ruby -e 'p ((1.0/0.0))'
INFINITY
triton2.eguchi:85% ./ruby -e 'p ((1.0/0.0).to_s)'
"INFINITY"
triton2.eguchi:86% ./ruby -e 'p ((-1.0/0.0).to_s)'
"-INFINITY"
triton2.eguchi:87% ./ruby -e 'p ((0.0/0.0).to_s)'
"NaN"
triton2.eguchi:88% ./ruby -e 'p ((1.0/0.0).nan?)'
false
triton2.eguchi:89% ./ruby -e 'p ((0.0/0.0).nan?)'
true
triton2.eguchi:90% ./ruby -e 'p ((1.0/0.0).nan?)'
false
triton2.eguchi:91% ./ruby -e 'p ((1.0/0.0).finite?)'
false
triton2.eguchi:92% ./ruby -e 'p ((1.0/1.0).finite?)'
true
triton2.eguchi:93% ./ruby -e 'p ((0.0/0.0).finite?)'
false
triton2.eguchi:94% ./ruby -e 'p ((-1.0/0.0).finite?)'
false
作って見たものの、より多くの人の意見を伺いたいと思います。
特に NaN との大小関係(<=>)の問題は
例外を上げるのが正しいのか迷いがあります。
また、INFINITY と NaN で print するので、.to_f も
合わせるべきでしょうか?
採用頂けるなら、Marshal も影響がある様に思えます。
(Pack は多分影響なし)
えぐち
diff -rud ../ruby-1.3.1-990205/main.c ./main.c
--- ../ruby-1.3.1-990205/main.c Tue Jan 26 19:08:13 1999
+++ ./main.c Sat Feb 6 01:40:40 1999
@@ -21,6 +21,9 @@
#if defined(__MACOS__) && defined(__MWERKS__)
#include <console.h>
#endif
+#ifdef __FreeBSD__
+#include <floatingpoint.h>
+#endif
int
main(argc, argv, envp)
@@ -32,6 +35,10 @@
#endif
#if defined(__MACOS__) && defined(__MWERKS__)
argc = ccommand(&argv);
+#endif
+#ifdef __FreeBSD__
+ /* allow divide by zero -- Inf */
+ fpsetmask(fpgetmask() & ~(FP_X_DZ|FP_X_INV));
#endif
ruby_init();
diff -rud ../ruby-1.3.1-990205/numeric.c ./numeric.c
--- ../ruby-1.3.1-990205/numeric.c Fri Feb 5 19:27:31 1999
+++ ./numeric.c Sat Feb 6 01:38:18 1999
@@ -23,6 +23,7 @@
VALUE rb_cFixnum;
VALUE rb_eZeroDiv;
+VALUE rb_eNaNComp;
ID rb_frame_last_func();
VALUE rb_float_new();
@@ -34,6 +35,12 @@
rb_raise(rb_eZeroDiv, "divided by 0");
}
+void
+rb_num_nancomp()
+{
+ rb_raise(rb_eNaNComp, "compare to NaN");
+}
+
static VALUE
num_coerce(x, y)
VALUE x, y;
@@ -185,13 +192,18 @@
{
char buf[24];
char *s;
+ double d = RFLOAT(flt)->value;
- sprintf(buf, "%-.10g", RFLOAT(flt)->value);
+ if (isinf(d)) {
+ return rb_str_new2(d > 0 ? "INFINITY" : "-INFINITY");
+ }
+ if (isnan(d)) {
+ return rb_str_new2("NaN");
+ }
+ snprintf(buf, 24, "%-.10g", RFLOAT(flt)->value);
if (s = strchr(buf, ' ')) *s = '\0';
s = buf; if (s[0] == '-') s++;
- if (strchr(s, '.') == 0 &&
- strcmp(s, "Inf") != 0 &&
- strcmp(s, "NaN") != 0) {
+ if (strchr(buf, '.') == 0) {
int len = strlen(buf);
char *ind = strchr(buf, 'e');
@@ -273,16 +285,11 @@
flo_div(x, y)
VALUE x, y;
{
- long f_y;
- double d;
-
switch (TYPE(y)) {
case T_FIXNUM:
- f_y = FIX2LONG(y);
- return rb_float_new(RFLOAT(x)->value / (double)f_y);
+ return rb_float_new(RFLOAT(x)->value / (double)FIX2INT(y));
case T_BIGNUM:
- d = rb_big2dbl(y);
- return rb_float_new(RFLOAT(x)->value / d);
+ return rb_float_new(RFLOAT(x)->value / rb_big2dbl(y));
case T_FLOAT:
return rb_float_new(RFLOAT(x)->value / RFLOAT(y)->value);
default:
@@ -433,6 +440,9 @@
default:
return rb_num_coerce_bin(x, y);
}
+ if (isnan(a) || isnan(b)) {
+ rb_num_nancomp();
+ }
if (a == b) return INT2FIX(0);
if (a > b) return INT2FIX(1);
return INT2FIX(-1);
@@ -637,6 +647,36 @@
}
static VALUE
+flo_infinite_p(flt)
+ VALUE flt;
+{
+ if (isinf(RFLOAT(flt)->value))
+ return RFLOAT(flt)->value > 0.0 ? +1 : -1;
+ else
+ return Qfalse;
+}
+
+static VALUE
+flo_nan_p(flt)
+ VALUE flt;
+{
+ if (isnan(RFLOAT(flt)->value))
+ return Qtrue;
+ else
+ return Qfalse;
+}
+
+static VALUE
+flo_finite_p(flt)
+ VALUE flt;
+{
+ if (finite(RFLOAT(flt)->value))
+ return Qtrue;
+ else
+ return Qfalse;
+}
+
+static VALUE
to_integer(val)
VALUE val;
{
@@ -1384,10 +1424,13 @@
void
Init_Numeric()
{
+ static double infinity, nan, zero = 0.0;
+
coerce = rb_intern("coerce");
to_i = rb_intern("to_i");
rb_eZeroDiv = rb_define_class("ZeroDivisionError", rb_eStandardError);
+ rb_eNaNComp = rb_define_class("NaNCompareError", rb_eStandardError);
rb_cNumeric = rb_define_class("Numeric", rb_cObject);
rb_include_module(rb_cNumeric, rb_mComparable);
@@ -1468,6 +1511,10 @@
rb_define_method(rb_cFixnum, "zero?", fix_zero_p, 0);
rb_cFloat = rb_define_class("Float", rb_cNumeric);
+ infinity = 1.0 / 0.0;
+ rb_define_const(rb_cFloat, "INFINITY", rb_float_new(infinity));
+ nan = 0.0 / 0.0;
+ rb_define_const(rb_cFloat, "NaN", rb_float_new(nan));
rb_undef_method(CLASS_OF(rb_cFloat), "new");
@@ -1496,6 +1543,9 @@
rb_define_method(rb_cFloat, "to_f", flo_to_f, 0);
rb_define_method(rb_cFloat, "abs", flo_abs, 0);
rb_define_method(rb_cFloat, "zero?", flo_zero_p, 0);
+ rb_define_method(rb_cFloat, "infinite?", flo_infinite_p, 0);
+ rb_define_method(rb_cFloat, "nan?", flo_nan_p, 0);
+ rb_define_method(rb_cFloat, "finite?", flo_finite_p, 0);
rb_define_method(rb_cFloat, "floor", flo_floor, 0);
rb_define_method(rb_cFloat, "ceil", flo_ceil, 0);