On Sat, Dec 13, 2008 at 12:37 PM, Benoit Jacob
<jacob.benoit.1@xxxxxxxxx> wrote:
Hi Keir,
Thanks for answering Frank's e-mail.
2008/12/13 Keir Mierle <mierle@xxxxxxxxx>:
> that it didn't at the time have an SVD,
By the way, have you looked at reimplementing the SVD? I ask because
I'll have some time during the holidays and SVD is near the top of my
priority list, so if you haven't started it already then maybe I'll
try to do it.
I have looked at it, and started sketching some interfaces, but didn't end up with anything. I read the relevant parts of the Golub book. Actually implementing the SVD is not hard; the tricky part is to make the API reusable. The SVD algorithm breaks down into a few clear parts which would almost certainly be useful outside of the SVD itself.
I am not sure about the following things:
- Should we maintain the current API for the SVD and just change under the covers? If so, then it is not obvious to me how to break the algorithm into smaller reusable pieces, because the SVD object owns the matrix with the results. In particular, should the bidiagonalization also be a Bidiagonalization object? Should it own the result matrices?
- Householder matrices are used in several parts of the code; it would be nice to have a simple mechanism for accumulating householder transforms (without actually applying them) to reuse throughout.
- I don't understand how lazy evaluation would work with the SVD; does it even make sense? My template-metaprogramming-fu is not strong.
- I am not sure how to evaluate the numerical precision of the resulting SVD algorithm, which is important for many applications (however this is an entire other can of worms).
If we can figure these things out, I'd happily write some or all of the SVD for Eigen.
Keir
> Benoit, perhaps it is worth adding an entry to the license FAQ explicitly
> explaining that eigen can be used in commercial applications, provided
> source modifications to eigen itself are released back to the community?
Yes, i'll do it, good idea.
Cheers,
Benoit
---