Hello Dima,

Hi. Yeah, there're plenty of other (and better) SVD implementations.
They won't be a drop-in replacement, however because numerical recipes
uses a ridiculous matrix storage scheme:

     typedef struct {
         INT    rows ;
         INT    columns ;
         DOUBLE **m ;
     } YMBOX, *YMPTR ;

I.e. each row (or column) of a matrix is stored in a separate chunk of
(usually dynamically-allocated) memory. This is stupid, and no other
library would do it this way. So to use other implementations you might
need to write a shim to convert formats. If you find a better way,
please let me know.

I don't think it's that bad.  In graywolf, the matrix computations
appear to be restricted to exactly one routine (adapt_wire_estimator),
which is about 200 lines of code that create some matrices, fill them,
call a few standard matrix routines (multiply, add, etc.), then call
svd_solve.  It all appears to be self-contained, so as long as I can
do the same matrix functions with another library, it should be simple
to replace the Numerical Recipes code.  In other words, matrices aren't
used anywhere else in graywolf.  The matrices are created for the sole
purpose of running svd_solve, and then freed.

                                        ---Tim

+--------------------------------+-------------------------------------+
| R. Timothy Edwards (Tim)       | email: t...@opencircuitdesign.com    |
| Open Circuit Design            | web:   http://opencircuitdesign.com |
| 19412 Cissel Manor Drive       | phone: (301) 528-5030               |
| Poolesville, MD 20837          | cell:  (408) 828-8212               |
+--------------------------------+-------------------------------------+

--
debian-science-maintainers mailing list
debian-science-maintainers@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-science-maintainers

Reply via email to