[#28942] FUNC_CDECL/FUNC_STDCALL are not defined? — KIMURA Koichi <kimura.koichi@...>

木村です。

24 messages 2006/07/03
[#28943] Re: FUNC_CDECL/FUNC_STDCALL are not defined? — "U.Nakamura" <usa@...> 2006/07/03

こんにちは、なかむら(う)です。

[#28945] Re: FUNC_CDECL/FUNC_STDCALL are not defined? — Takaaki Tateishi <ttate@...> 2006/07/03

U.Nakamura wrote:

[#28946] Re: FUNC_CDECL/FUNC_STDCALL are not defined? — "U.Nakamura" <usa@...> 2006/07/03

こんにちは、なかむら(う)です。

[#29006] block wrapper — Tanaka Akira <akr@...>

以前、[ruby-dev:28747] の pp.rb の問題を解決するのに

44 messages 2006/07/10
[#29007] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2006/07/10

まつもと ゆきひろです

[#29008] Re: block wrapper — Tanaka Akira <akr@...> 2006/07/10

In article <1152541094.492146.23781.nullmailer@x31.priv.netlab.jp>,

[#29009] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2006/07/10

まつもと ゆきひろです

[#29010] Re: block wrapper — Tanaka Akira <akr@...> 2006/07/10

In article <1152542689.441125.24418.nullmailer@x31.priv.netlab.jp>,

[#29022] Re: block wrapper — Tanaka Akira <akr@...> 2006/07/12

In article <87psgd8qb2.fsf@fsij.org>,

[#29078] Re: block wrapper — Tanaka Akira <akr@...> 2006/07/19

In article <87r70rdpeg.fsf@fsij.org>,

[#29466] Re: block wrapper — Tanaka Akira <akr@...> 2006/09/04

In article <871wshddvn.fsf@fsij.org>,

[#29584] Re: block wrapper — Tanaka Akira <akr@...> 2006/09/16

In article <87ac5g5a7i.fsf@fsij.org>,

[#29616] Re: block wrapper — Tanaka Akira <akr@...> 2006/09/26

In article <8764foo7s7.fsf@fsij.org>,

[#30777] Re: block wrapper — Tanaka Akira <akr@...> 2007/05/11

In article <87venar27i.fsf@fsij.org>,

[#30778] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2007/05/11

まつもと ゆきひろです

[#30780] Re: block wrapper — Tanaka Akira <akr@...> 2007/05/12

In article <1178883053.645482.13087.nullmailer@x31.netlab.jp>,

[#30781] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2007/05/12

まつもと ゆきひろです

[#30840] Re: block wrapper — Tanaka Akira <akr@...> 2007/05/30

In article <1178978140.846301.8164.nullmailer@x31.netlab.jp>,

[#30843] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2007/05/30

まつもと ゆきひろです

[#30848] Re: block wrapper — SASADA Koichi <ko1@...> 2007/05/31

 ささだです。

[#30850] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2007/05/31

まつもと ゆきひろです

[#30855] Re: block wrapper — Tanaka Akira <akr@...> 2007/05/31

In article <E1HtaMS-00041i-6U@x31>,

[#29013] problem in bignorm — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2006/07/10
[#29016] Re: problem in bignorm — Yukihiro Matsumoto <matz@...> 2006/07/11

まつもと ゆきひろです

[#29018] Re: problem in bignorm — "U.Nakamura" <usa@...> 2006/07/11

こんにちは、なかむら(う)です。

[#29019] Re: problem in bignorm — "U.Nakamura" <usa@...> 2006/07/11

こんにちは、なかむら(う)です。

[#29038] irb completion — Tadayoshi Funaba <tadf@...>

ふなばです。

22 messages 2006/07/17
[#29063] Re: irb completion — keiju@... (石塚圭樹) 2006/07/18

けいじゅ@いしつかです.

[#29064] Re: irb completion — Yukihiro Matsumoto <matz@...> 2006/07/18

まつもと ゆきひろです

[#29070] Re: irb completion — Ryan Davis <ryand-ruby@...> 2006/07/18

[#29093] Re: [ruby-cvs:17195] ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Tanaka Akira <akr@...>

In article <20060720173258.5D4BAC6781@lithium.ruby-lang.org>,

14 messages 2006/07/20
[#29096] Re: ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Yukihiro Matsumoto <matz@...> 2006/07/20

まつもと ゆきひろです

[#29097] Re: ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Tanaka Akira <akr@...> 2006/07/20

In article <1153423941.406034.21948.nullmailer@x31.priv.netlab.jp>,

[#29098] Re: ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Yukihiro Matsumoto <matz@...> 2006/07/20

まつもと ゆきひろです

[#29099] Re: ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Tanaka Akira <akr@...> 2006/07/20

In article <1153425319.663162.22588.nullmailer@x31.priv.netlab.jp>,

[#29101] Re: ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Yukihiro Matsumoto <matz@...> 2006/07/21

まつもと ゆきひろです

[#29148] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — WATANABE Hirofumi <eban@...>

わたなべです。

31 messages 2006/07/27
[#29149] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — "NARUSE, Yui" <naruse@...> 2006/07/27

成瀬です。

[#29151] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/07/27

まつもと ゆきひろです

[#29152] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — URABE Shyouhei <root@...> 2006/07/27

卜部です

[#29153] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/07/27

まつもと ゆきひろです

[#29155] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — URABE Shyouhei <root@...> 2006/07/27

卜部です。

[#29157] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — "NARUSE, Yui" <naruse@...> 2006/07/27

成瀬です。

[#29159] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/07/27

まつもと ゆきひろです

[#29440] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — "NARUSE, Yui" <naruse@...> 2006/09/03

成瀬です

[#29462] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/09/04

まつもと ゆきひろです

[#29467] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — "NARUSE, Yui" <naruse@...> 2006/09/04

成瀬です。

[#29472] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/09/04

まつもと ゆきひろです

[#29483] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — "NARUSE, Yui" <naruse@...> 2006/09/05

成瀬です。

[#29488] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/09/05

まつもと ゆきひろです

[#29494] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Tadayoshi Funaba <tadf@...> 2006/09/05

ふなばです。

[#29497] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/09/05

まつもと ゆきひろです

[#29513] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Tadayoshi Funaba <tadf@...> 2006/09/06

> 郵便局の消印は採用できないんですが、なにが良いと思いますか。

[#29516] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/09/06

まつもと ゆきひろです

[ruby-dev:29061] Re: Numeric#step

From: Masahiro TANAKA <masa@...>
Date: 2006-07-18 13:10:04 UTC
List: ruby-dev #29061
|From: Tadayoshi Funaba <tadf@dotrb.org>
|Date: Mon, 17 Jul 2006 21:44:58 +0900

> Numeric#step ですが、1.0/0 = 無限大であるとき、
> 
> $ ruby -v -eInf=1.0/0 -e'1.step(Inf, Inf){|x| p x}'
> ruby 1.8.4 (2005-12-24) [i386-freebsd5.4]

> $ ruby -v -eInf=1.0/0 -e'10.step(1, Inf){|x| p x}'
> ruby 1.8.4 (2005-12-24) [i386-freebsd5.4]
> NaN

望ましい振舞いがどういうものかはわかりませんが、
Floatの場合にNaNが出るのはまずそうなので、
以下のような対処を考えました。
ついでにループカウンタが溢れる場合の対処もしています。
警告を出すかどうか/出し方はこれでよいかわかりませんが。

田中昌宏

--- numeric.c~	2006-05-01 12:46:46 +0900
+++ numeric.c	2006-07-18 21:05:38 +0900
@@ -1478,22 +1478,38 @@
     else if (TYPE(from) == T_FLOAT || TYPE(to) == T_FLOAT || TYPE(step) == T_FLOAT) {
 	const double epsilon = DBL_EPSILON;
 	double beg = NUM2DBL(from);
 	double end = NUM2DBL(to);
 	double unit = NUM2DBL(step);
 	double n = (end - beg)/unit;
 	double err = (fabs(beg) + fabs(end) + fabs(end-beg)) / fabs(unit) * epsilon;
 	long i;
+	int warn = 0;
 
+	if (isinf(beg) || isinf(unit)) {
+	    if ((unit>0 && (end-beg)>=0) || (unit<0 && (end-beg)<=0)) {
+	        unit = 0;
+	        n = 0;
+	    } else {
+	        n = -1;
+	    }
+	    err = 0;
+	}
 	if (err>0.5) err=0.5;
 	n = floor(n + err) + 1;
+	if (n>LONG_MAX) {
+	    n = LONG_MAX;
+	    warn = 1;
+	}
 	for (i=0; i<n; i++) {
 	    rb_yield(rb_float_new(i*unit+beg));
 	}
+	if (warn)
+	    rb_warn("iteration is reduced to LONG_MAX times");
     }
     else {
 	VALUE i = from;
 	ID cmp;
 
 	if (RTEST(rb_funcall(step, '>', 1, INT2FIX(0)))) {
 	    cmp = '>';
 	}


* ChangeLog

	* numeric.c (num_step): cares for Infifnity cases.
	  repeats at most LONG_MAX times in Float cases.


* 変更前動作

$ ./ruby -v
ruby 1.8.5 (2006-07-18) [i686-linux]
$ ./ruby -e'Inf=1.0/0; 1.step(Inf,1){|x| p x; break if x.abs>5}'
1.0
2.0
3.0
4.0
5.0
6.0
$ ./ruby -e'Inf=1.0/0; 1.step(Inf,-1){|x| p x; break if x.abs>5}'
$ ./ruby -e'Inf=1.0/0; 1.step(-Inf,1){|x| p x; break if x.abs>5}'
$ ./ruby -e'Inf=1.0/0; 1.step(-Inf,-1){|x| p x; break if x.abs>5}'
1.0
0.0
-1.0
-2.0
-3.0
-4.0
-5.0
-6.0
$ ./ruby -e'Inf=1.0/0;i=0; Inf.step(1,-1){|x| p x; break if (i+=1)>5}'
Infinity
Infinity
Infinity
Infinity
Infinity
Infinity
$ ./ruby -e'Inf=1.0/0;i=0; Inf.step(1,1){|x| p x; break if (i+=1)>5}'
$ ./ruby -e'Inf=1.0/0;i=0; (-Inf).step(1,-1){|x| p x; break if (i+=1)>5}'
$ ./ruby -e'Inf=1.0/0;i=0; (-Inf).step(1,1){|x| p x; break if (i+=1)>5}'
-Infinity
-Infinity
-Infinity
-Infinity
-Infinity
-Infinity
$ ./ruby -e'Inf=1.0/0; 1.step(10,Inf){|x| p x}'
NaN
$ ./ruby -e'Inf=1.0/0; 1.step(-10,Inf){|x| p x}'
NaN
$ ./ruby -e'Inf=1.0/0; 1.step(10,-Inf){|x| p x}'
NaN
$ ./ruby -e'Inf=1.0/0; 1.step(-10,-Inf){|x| p x}'
NaN
$ ./ruby -e'Inf=1.0/0; 1.step(1,Inf){|x| p x}'
NaN
$ ./ruby -e'Inf=1.0/0; 1.step(1,-Inf){|x| p x}'
NaN
$ ./ruby -e'Inf=1.0/0; 1.step(Inf,Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; 1.step(Inf,-Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; 1.step(-Inf,Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; 1.step(-Inf,-Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; Inf.step(Inf,Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; Inf.step(-Inf,Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; Inf.step(Inf,-Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; Inf.step(-Inf,-Inf){|x| p x}'


* 変更後動作

$ ./ruby -e'Inf=1.0/0; 1.step(Inf,1){|x| p x; break if x.abs>5}'1.0
2.0
3.0
4.0
5.0
6.0
$ ./ruby -e'Inf=1.0/0; 1.step(Inf,-1){|x| p x; break if x.abs>5}'
$ ./ruby -e'Inf=1.0/0; 1.step(-Inf,1){|x| p x; break if x.abs>5}'
$ ./ruby -e'Inf=1.0/0; 1.step(-Inf,-1){|x| p x; break if x.abs>5}'
1.0
0.0
-1.0
-2.0
-3.0
-4.0
-5.0
-6.0
$ ./ruby -e'Inf=1.0/0;i=0; Inf.step(1,-1){|x| p x; break if (i+=1)>5}'
Infinity
$ ./ruby -e'Inf=1.0/0;i=0; Inf.step(1,1){|x| p x; break if (i+=1)>5}'
$ ./ruby -e'Inf=1.0/0;i=0; (-Inf).step(1,-1){|x| p x; break if (i+=1)>5}'
$ ./ruby -e'Inf=1.0/0;i=0; (-Inf).step(1,1){|x| p x; break if (i+=1)>5}'
-Infinity
$ ./ruby -e'Inf=1.0/0; 1.step(10,Inf){|x| p x}'
1.0
$ ./ruby -e'Inf=1.0/0; 1.step(-10,Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; 1.step(10,-Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; 1.step(-10,-Inf){|x| p x}'
1.0
$ ./ruby -e'Inf=1.0/0; 1.step(1,Inf){|x| p x}'
1.0
$ ./ruby -e'Inf=1.0/0; 1.step(1,-Inf){|x| p x}'
1.0
$ ./ruby -e'Inf=1.0/0; 1.step(Inf,Inf){|x| p x}'
1.0
$ ./ruby -e'Inf=1.0/0; 1.step(Inf,-Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; 1.step(-Inf,Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; 1.step(-Inf,-Inf){|x| p x}'
1.0
$ ./ruby -e'Inf=1.0/0; Inf.step(Inf,Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; Inf.step(-Inf,Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; Inf.step(Inf,-Inf){|x| p x}'
$ ./ruby -e'Inf=1.0/0; Inf.step(-Inf,-Inf){|x| p x}'
Infinity

In This Thread

Prev Next