From: Masahiro TANAKA Date: 2003-07-23T13:07:30+09:00 Subject: [ruby-dev:20812] Re: 0**(-1) with rational At Wed, 23 Jul 2003 03:30:41 +0900, Tanaka Akira wrote: > > そういえば思い出したのですが、rational を require しているときとしてい > ないときで 0**(-1) の挙動が次のように違うんですが、これは意図されてい > るんでしょうか? > > % ruby -rrational -e 'p 0**(-1)' > Rational(1, 0) > % ruby -e 'p 0**(-1)' > Infinity 他にも rational.rb での ** の再定義のためにエラーが出ます。 % ruby-1.8.0 -rrational -e 'p 1**Rational(1)' /usr/local/lib/ruby/1.8/rational.rb:344:in `power!': undefined method `power!' for Rational(1, 1):Rational (NoMethodError) from /usr/local/lib/ruby/1.8/rational.rb:344:in `**' from -e:1 % ruby-1.8.0 -rrational -e 'p 1**1.0' /usr/local/lib/ruby/1.8/rational.rb:344:in `power!': undefined method `power!' for 1.0:Float (NoMethodError) from /usr/local/lib/ruby/1.8/rational.rb:344:in `**' from -e:1 ** の再定義の意図は、 2**(-2) => 0.25 から 2**(-2) => Rational(1, 4) への動作変更のようですね。この再定義はどうしても必要なんでしょうか? 田中昌宏