On Tuesday, 22 April 2003 at  3:49:23 +0900, Bret Jolly wrote:
> oinkoink+unet / rexx.com (Bret Jolly) wrote in message news:<7e7131a1.0304201226.4808d97e / posting.google.com>...
> > An old bug from ruby 1.6 is still unfixed in the ruby 1.8 preview.
> [...]
> This bug affects more than just the determinant (though I think the
> underlying problem is the same).  Other methods need the mathn library
> to work correctly.  For example:
> irb(main):001:0> require 'matrix'
> true
> irb(main):002:0> m = Matrix[[1, 3], [2, 4]]
> Matrix[[1, 3], [2, 4]]
> irb(main):003:0> n = m.inv
> Matrix[[-3, 2], [1, -1]]
> irb(main):004:0> m*n
> Matrix[[0, -1], [-2, 0]]
> irb(main):005:0> require 'mathn'
> true
> irb(main):006:0> n = m.inv
> Matrix[[-2, 3/2], [1, -1/2]]
> irb(main):007:0> m*n
> Matrix[[1, 0], [0, 1]]

Is the problem that you are asking for 5/9 not to be zero?

irb(main):001:0> require 'matrix'
=> true
irb(main):002:0> m=Matrix[[1.0,3.0],[2.0,4.0]]
=> Matrix[[1.0, 3.0], [2.0, 4.0]]
irb(main):003:0> n = m.inv
=> Matrix[[-2.0, 1.5], [1.0, -0.5]]
irb(main):004:0> m * n
=> Matrix[[1.0, 0.0], [0.0, 1.0]]

 
 irb(main):001:0> require 'matrix'
 => true
 irb(main):002:0> require 'rational'
 => true
 irb(main):003:0>
 irb(main):004:0>
 m=Matrix[[Rational.new(1,1),Rational.new(3,1)],[Rational.new(2,1),Rational.new(4,1)]]
 => Matrix[[Rational(1, 1), Rational(3, 1)],
 [Rational(2, 1), Rational(4, 1)]]
 irb(main):005:0> n = m.inv
 => Matrix[[Rational(-2, 1), Rational(3, 2)],
 [Rational(1, 1), Rational(-1, 2)]]
 irb(main):006:0> m *n 
 => Matrix[[Rational(1, 1), Rational(0, 1)],
 [Rational(0, 1), Rational(1, 1)]]


-- 
Jim Freeze
----------
Too much of a good thing is WONDERFUL.
		-- Mae West