J
Jeff Mitchell
[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
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