Hi all,

Another question about Rational#power!. I tried this

irb(main):001:0> 2.power!(-2)

NoMethodError: undefined method `power!’ for 2:Fixnum

from (irb):1

irb(main):002:0> require ‘rational’

=> true

irb(main):003:0> 2.power!(-2)

=> 0.25 # huh?

That returns 0.25. However, I would have expected Rational(1, 4).

Based on

the code in rational, it looks like power! is an alias for **, and ** is

an

alias for rpower. So, based on the rpower method, I would think that a

negative value for +other+ would call Rational.new! and return a

Rational.

Or do I have it wrong?

from rational.rb:

class Fixnum

undef quo

# If Rational is defined, returns a Rational number instead of a

Fixnum.

def quo(other)

Rational.new!(self,1) / other

end

alias rdiv quo

# Returns a Rational number if the result is in fact rational (i.e.

+other+

< 0).

def rpower (other)

if other >= 0

self.power!(other)

else

Rational.new!(self,1)**other

end

end

unless defined? 1.power!

alias power! **

alias ** rpower

end

end

Ideas? Thanks.

Dan