[ANN] linalg-0.3.2 -- Ruby Linear Algebra Library

http://linalg.rubyforge.org/

http://rubyforge.org/frs/?group_id=273

-----------------
From the README:

Major features:
* Cholesky decomposition
* LU decomposition
* QR decomposition
* Schur decomposition
* Singular value decomposition
* Eigenvalues and eigenvectors of a general matrix
* Minimization by least squares
* Linear equation solving
* Stand-alone LAPACK bindings:
    call any LAPACK routine from directly from ruby.

-----------------
Release notes:

Initial release.

There are no dependencies for the pre-built packages --
linalg-0.3.2-i686-linux-ruby18.tgz
linalg-0.3.2-i386-mswin32-ruby18.zip

To build from source, you need: LAPACK, BLAS, libf2c.  Your OS should
have these packages available in binary form.  If not, you will need a
Fortran compiler.  (The pre-builts statically link these packages,
thus no dependencies.)

The pre-built win32 linalg is somewhat incompatible with the 1.8.1
Ruby One-Click Installer, as are all extensions not built with Visual
Studio .NET.  (I say "somewhat" because it probably won't crash for
light use, but no guarantees.)

You can pick up a compatible 1.8.1 win32 ruby at
http://www.dm4lab.to/~usa/ruby/index_en.html

There is a new test 1.8.2 one-click installer which seems to work
(it reverts back to the common win32 compatible runtime):
http://rubyforge.org/frs/download.php/852/ruby182-14-test.zip

-----------------
linalg is a by-product of my academic work with crystallographic space
groups.  A good deal of linear algebra functionality from Mathematica
and Matlab can be found in linalg, with equal or greater speed insofar
as per-matrix function calls.

It started when I was too lazy to move from ruby back to Mathematica,
and too lazy to set up Mathlink or some such.  What I was doing was
not particularly suited to Mathematica either, minus the linear
algebra part, which among other things was communicating with two
other processes, a little networking, and spitting out LaTeX output.
It was nice to be free of Mathematica as well.

I have pounded on this package pretty thoroughly in real-life
applications, so I do not expect many serious bugs, if at all.  This
kind of package is very amenable to unit testing as well.

I realize linalg is mostly for specialized use; singular value
decompositions are not the most urgent necessity for rubyists, I can
assume.  But that is what I needed, so here it is.

Excerpt from the end of the README: Perhaps some day there will be a
common library which all numerical ruby packages may share.  Perhaps
the basis will be the R-project library.  But for now, linalg exists
because the LAPACK routines were "right there" in front of me, I
needed them, and it was easy to call them.

I'll add that although full functionality for complex-number matrices
is not yet finished, it would not take too much time to complete.
However I hesitate for fear of something better coming along which can
do singular value decompositions and eigenvalues of a general matrix.

If enough people request it, I'll get off my butt and implement the
complex side.  By the way there is no reason to touch C code -- all
the LAPACK routines are available within ruby and all the core methods
are implemented in C for all matrix types.  This makes contributing
easier.

linalg contains a few ideas which are independently useful, I think.
The Linalg::Iterators mix-in comes to mind.  Check it out :)