lucasmaystre / svdlibc

A fork of Doug Rohde's SVD C Library.
http://tedlab.mit.edu/~dr/SVDLIBC/
48 stars 19 forks source link

Sparse matrices bring NaN computation and infinite-loop #2

Open ujhazib opened 10 years ago

ujhazib commented 10 years ago

The latest, as well as v1.34 calculates NaN values at a time when the input matrices have lesser than 1% density of non-zero values. I generated lots of matrices with size of bigger than 1000x1000 (for a start) and 0.05% density and nearly all of them brought this error. The problem first shows up in the svd_pythag method, where the computation goes into an infinite loop because of the NaN values.

Smaller matrices brought weird values instead of the infinite loop.

The algorithm to generate the test matrices is simple: using a random generator to ensure the given density value and generating a matrix with random [1-9] values where the random lets us.

I also state here that I used the dense matrix format, but even if I format it to sparse, things did not change (maybe because the algorithm already converts it to sparse when it starts?)

Tests were done one a Ubuntu machine with gcc and Intel Pentium Dual Core CPU, as well as on a Windows 7 machine with Visual Studio 2010 and a 6 core AMD Phenom CPU.