Hi:

I found what I would call strange behavior with Matrix and Complex.

-> cat c.rb

require 'matrix’

require ‘complex’

c1 = Complex.new(1,2)

c2 = Complex.new(3,4)

c3 = Complex.new(4,2)

m = Matrix[[c1,c2],[c3,c2]]

puts “m”, m

m = m.to_f

puts “m.to_f”, m

puts “m.inv.inv”, m.inv.inv

puts “m.inv.inv.to_f”, m.inv.inv.to_f

puts (m == m.inv.inv.to_f)

-> ruby c.rb

m

Matrix[[1+2i, 3+4i], [4+2i, 3+4i]]

m.to_f

Matrix[[1.0+2.0i, 3.0+4.0i], [4.0+2.0i, 3.0+4.0i]]

m.inv.inv

Matrix[[1.0+2i, 3.0+4i], [4.0+2i, 3+4i]]

m.inv.inv.to_f

Matrix[[1.0+2i, 3.0+4i], [4.0+2i, 3+4i]]

false

Why does taking the double inverse let the elements

go back to integers? And, why does #to_f not convert

each element to a float after taking the inverse?

Thanks

## ···

–

Jim Freeze

If only I had something clever to say for my comment…

~