Tim Edwards <t...@opencircuitdesign.com> writes:

> Well, it's pretty clear that the TimberWolf authors at Yale unabashedly
> plaigerized out of Numerical Recipes for their thesis work.  What you
> found is not particularly difficult to work around, as the single-value
> decomposition routines can be found in the GNU Scientific Library and
> should be reasonably easy to substitute.

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.


>  However, it feeds back into other matrix manipulation routines, so I
> cannot be sure how much of that was pulled from Numerical Recipies.
> This looks like finding a needle in a haystack to me. How did you find
> that bit of plaigerized code, and how would I go about flushing out
> any additional plaigerized sections of code?

I came across some other libraries that were doing a similar thing, and
then searched the Debian codebase (http://codesearch.debian.net) for
some unique-looking comments. Here I searched for

    You must augment A with extra zero rows

I also searched for some other things that caught some other libraries,
but the above chunk of text is the only one I found in graywolf. What
you can do is to look at functions that use that YMPTR matrix
representation: anything that uses it is a candidate for being plucked
from the book.

Note that for some reason the utility code to support this matrix
representation IS in the public domain, as indicated in numerical
recipes copyright page linked in the bug report.


> I definitely want these out of the code base, especially as GNU
> alternatives are readily available.

Thank you very much.

Reply via email to