[ANN] Ruby Linear Algebra Library

Discussion in 'Ruby' started by Jeff Mitchell, Jun 29, 2004.

  1. [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 :)
     
    Jeff Mitchell, Jun 29, 2004
    #1
    1. Advertising

  2. Jeff Mitchell

    Cai Li Guest

    Jeff Mitchell wrote:

    >[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 :)
    >
    >
    >

    Great job!I am just looking forward such a Matlab-like
    module.
    Do you put some iterative techniques in matrix algebra in your
    to-do list?Since I am working on implementing some ones in Ruby ,like SOR.
     
    Cai Li, Jun 29, 2004
    #2
    1. Advertising

  3. Cai Li <> wrote in message news:<>...
    > Jeff Mitchell wrote:
    >
    > >[ANN] linalg-0.3.2 -- Ruby Linear Algebra Library
    > >
    > >http://linalg.rubyforge.org/
    > >
    > >http://rubyforge.org/frs/?group_id=273
    > >

    >
    > Great job! I am just looking forward such a Matlab-like module. Do
    > you put some iterative techniques in matrix algebra in your to-do
    > list?Since I am working on implementing some ones in Ruby ,like SOR.


    I have not thought about iterative methods yet. You are welcome to
    contribute if you wish. Actually I use conjugate gradient all the
    time via some other modeling software.

    This is related to a couple general concerns I have:

    The first is fragmentation of efforts in ruby. If someone wants to
    publish fast Fourier transforms or iterative methods, he or she should
    be able to pull from a common library. For example it's essential to
    have a common complex number class written in C.

    The second is duplication of existing functionality already present in
    open software. Can anyone suggest a good C library for numerical
    analysis?

    There are also application-level packages like Octave and R-Project.
    Octave appears to have the most functionality but seems to lack the
    means of binding to a language, though I am not sure. R-project
    does provide for bindings, but lacks in functionality.
     
    Jeff Mitchell, Jun 30, 2004
    #3
  4. Jeff Mitchell

    Cai Li Guest

    Jeff Mitchell wrote:

    >The first is fragmentation of efforts in ruby. If someone wants to
    >publish fast Fourier transforms or iterative methods, he or she should
    >be able to pull from a common library. For example it's essential to
    >have a common complex number class written in C.
    >
    >
    >

    My work may be based on NARRAY's API,but I have not
    read your code yet.I found some of your words in linalg's
    README file:
    -----------------------
    The other issue is +narray+. After a short trial, I decided it wastoo
    difficult to retrofit +linalg+ into +narray+. There are also
    irreconcilable stylistic differences between +linalg+ and +narray+.

    But +linalg+ does not directly compete with +narray+. +linalg+ is
    fordoing numerical analysis and is rather isolated from the rest of
    ruby.Where +linalg+ has only four matrix types, +narray+ has several
    more(including generic ruby objects) and plays well with other ruby
    packages.
    ---------------------------
    But maybe We need a more robust base to develop more.Consider
    the advantage of Ruby in numerical analysis,a isolated method
    package may be not the best one,since we need it to interact
    with other packages(Matlab) or languages(FORTRAN) most of the time.

    Maybe it's the time to have a fundemental module designed for Ruby
    especially.
     
    Cai Li, Jun 30, 2004
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    0
    Views:
    295
  2. Michael Lehn
    Replies:
    0
    Views:
    971
    Michael Lehn
    Jun 25, 2007
  3. jimgardener

    good linear algebra library

    jimgardener, Jul 6, 2008, in forum: Java
    Replies:
    1
    Views:
    345
    Arne Vajhøj
    Jul 6, 2008
  4. James M. Lawrence

    [ANN] Ruby Linear Algebra Library 1.0.0

    James M. Lawrence, Oct 6, 2008, in forum: Ruby
    Replies:
    2
    Views:
    173
    James M. Lawrence
    Oct 6, 2008
  5. lehn
    Replies:
    0
    Views:
    332
Loading...

Share This Page