Bug in ruby complex module:

Transcript :
emac$ irb

require ‘complex’
=> true

cc = Complex(Float::MAX/2, Float::MAX / 2)
=> Complex(8.98846567431158e+307, 8.98846567431158e+307)

cc / cc
=> Complex(NaN, NaN)

require ‘cpfixup’
=> true

cc / cc
=> Complex(1.0, 0.0)

exit
Work Directory: ~ :
emac$
Th source of the fix (in a file called ‘cpfixup.rb’ in my home
directory is

require ‘complex’

class Complex < Numeric

def / (other)
if other.kind_of?(Complex)
magn = other.abs
tmp = Complex.new(other.real/magn , other.image/magn)
self * tmp.conjugate / magn
elsif Complex.generic?(other)
Complex(@real/other, @image/other)
else
x, y = other.coerce(self)
x / y
end
end
end

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs