This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: a Guile linear-algebra package, RFC


chrislee@lavash.ius.cs.cmu.edu writes:

> I've been using Guile for a while now as a kind of Matlab-substitute
> in research projects, and find it a fun way to write numerical
> programs.

Chris, this is what I have been waiting for.

I'm currently doing heavy matrix work with Octave (which is a *free*
Matlab clone) and having the power and fun of Scheme available to
tinker with matrix algorithms would make my days a lot shorter.

I shortly thought about replacing the Matlab like language of Octave
with Guile, but nobody around me did even realize that Matlab's
language is crap so I lost interest.

For all I know, digital signal processing will tackle more and more
computationally expensive tasks in the next years, and most of these
tasks can be conveniently expressed with matrix notation.  Still it is
a long way from the mathematical formulation of these tasks to their
efficient implementation in, say, mobile phones.  Scheme with its high
abstraction capabilities is a natural choice for me to try to bridge
the gap between the high level formulation of an algorithm and a
correct low level implementation.

I have only just begun to think about these issues, but, I'm quite
interested in the first step, being able to do numerical matrix
experiments with Scheme.  So your existing stuff is definitely
welcome.

> At the moment, only double-precision real numbers are supported (not
> single-precision nor complex).

For my algorithms, complex numbers are essential, unfortunately.
Looks like we EE types are so only ones who use complex numbers for
real...

> 1) Is anyone interested in this package (if no one is interested,
>    maybe I should not bother).

Yes, yes, yes, yes!

> 2) This code has been used to support a couple of my own personal
>    projects, but is not yet widely used or fully tested.  The
>    underlying FORTRAN libraries are reliable, but it is possible that
>    there are bugs in the code which calls those libraries which could
>    result in incorrect results.  Should I let people play with it at
>    their own risk and help me flush-out bugs bazzare-style, or is this
>    simply too risky for numerical code.

I think those people who will actually use the code can decide this
best.  Just put out the code with the usual NO WARRANTY sign and write
something about how you yourself use it.

> 4) Should I assume that people know what BLAS and LAPACK are?

>From my *very* limited experience with numerical matrix stuff, people
are more likely to know Matlab than BLAS and LAPACK (I myself have
only vaguely heard about BLAS and LAPACK).

>    Can I let people find these themselves or should I try to
>    write-up some instructions for finding/compiling/installing them
>    (I'm not an expert on this, but I've done a little).

Some hints would definitely be useful.  Such as how to test if one
already has them installed and where to get them if not.  I have never
seen BLAS and LAPACK, but I guess they come with their own
documentation for compiling/installing them, no?

> 5) Does anyone have serious problems with column-major matrix
>    representation?  I chose to be compatible with the FORTRAN
>    convention because it simplified the project as a whole.

Does this affect the Scheme side of things?  I think it's fairly
standard to have indices in the order ROW, COLUMN.  Is this order
affected by the column-major representation?

> 7) Would people be willing to port this to their own systems and send
>    me patches to make the code more universal?

Of course!


I myself would really like to have a Matlab clone with Scheme as its
`scripting' language.  Given that Octave already exists and is free
(and does complex numbers!), would it be possible to use the numerical
libraries of Octave instead of BLAS and LAPACK, etc?  I vaguely
remeber that Octave too uses some FORTRAN code that is then wrapped
with C++ classes.

regards,
 Marius