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…
~