Dave Burt wrote: > M. Edward (Ed) Borasky wrote: > >> I guess I need to define my own "Matrix" class then. Making a copy of a >> 200x200 matrix to change one element, or in my case the whole upper >> triangle, is not going to work. I ended up doing "a = m.to_a", changing >> the upper triangle in "a", and then doing "m = Matrix.rows(a)". Until I >> looked at the code, I thought Matrix was either inheriting from or >> mixing in Array. >> > > It's immutable so you can treat it like Numeric objects. > > Check out narray on the RAA, it might be what you're looking for. > Apparently it's fast, too. > > http://raa.ruby-lang.org/project/narray/ > > Cheers, > Dave > I am looking *at* narray, and I am looking *for* code that does matrix operations with rational and possibly complex rational matrix elements and I am looking *to* find ways to tune the Ruby interpreter to do these efficiently. :) I may end up, when all the smoke has cleared, with narray, or GSL, or LAPACK or a home-brew interface to a C/C++ symbolic math package like Singular or Ginac. But right now, my focus is on Matrix and how to make it better in pure Ruby. The application I have in mind will use smallish matrices -- the 200x200 test case I posted is probably both bigger and more ill-conditioned than I will need. The application uses lots of matrix algebra to break large problems up into block-tridiagonal matrices and other structured forms. Before I look at alternatives, I want to see what I can build with pure Ruby and the Matrix/Mathn/Rational/Complex libraries.