Bug #781

Numeric#step で step として Infinity をつかうと NaN を生成することがある

Added by tadayoshi funaba almost 7 years ago. Updated over 4 years ago.

Status:Closed
Priority:Normal
Assignee:-
ruby -v: Backport:

Description

=begin
1.0/0 = Infinity として

$ ./ruby -ve "0.step(10,1.0/0){|x| p x}"
ruby 1.9.0 (2008-11-24 revision 20336) [i686-linux]
NaN

1.8 も同じですが、1.6 はなりません。

$ ruby168 -ve "0.step(10,1.0/0){|x| p x}"
ruby 1.6.8 (2002-12-24) [i686-linux]
0
=end


Related issues

Related to Ruby trunk - Bug #3945: Numeric#step with infinity unit Closed 10/14/2010

Associated revisions

Revision 20348
Added by Yukihiro Matsumoto almost 7 years ago

  • numeric.c (num_step): treat infinite step specially. fix: #781.

Revision 20348
Added by Yukihiro Matsumoto almost 7 years ago

  • numeric.c (num_step): treat infinite step specially. fix: #781.

History

#1 Updated by Yukihiro Matsumoto almost 7 years ago

  • Status changed from Open to Closed

=begin
fixed by r20348.
=end

#2 Updated by tadayoshi funaba almost 7 years ago

=begin
単に確認ですが、step が浮動小数点数だと、最初から浮動小数点数になっ
ていて、他の場合と違うように見えます。これはこういうものですか。

$ ./ruby -e "p 0.step(3,1.0){|x| p [x, x.class]}"
[0.0, Float]
[1.0, Float]
[2.0, Float]
[3.0, Float]
0

$ ./ruby -e "p 0.step(3,Rational(1)){|x| p [x, x.class]}"
[0, Fixnum]
[(1/1), Rational]
[(2/1), Rational]
[(3/1), Rational]
0

$ ./ruby -rbigdecimal -e "p 0.step(3,BigDecimal('1')){|x| p [x, x.class]}"
[0, Fixnum]
[#, BigDecimal]
[#, BigDecimal]
[#, BigDecimal]
0

=end

#3 Updated by Yukihiro Matsumoto almost 7 years ago

=begin
まつもと ゆきひろです

In message "Re: [Bug #781] Numeric#step で step として Infinity をつかうと NaN を生成することがある"
on Tue, 25 Nov 2008 23:39:19 +0900, tadayoshi funaba redmine@ruby-lang.org writes:

|単に確認ですが、step が浮動小数点数だと、最初から浮動小数点数になっ
|ていて、他の場合と違うように見えます。これはこういうものですか。

beg, end, stepのいずれかがFloatだとぜんぶFloatで計算します。
これはそういうもののつもりです。

=end

Also available in: Atom PDF