New user self-registration is currently disabled. Please email eigen-core-team @ if you need an account.
Bug 791 - Jacobi SVD fails to terminate on certain matrices containing NaN
Jacobi SVD fails to terminate on certain matrices containing NaN
Product: Eigen
Classification: Unclassified
Component: SVD
x86 - 64-bit Linux
: Normal Wrong Result
Assigned To: Nobody
Depends on:
Blocks: 3.3
  Show dependency treegraph
Reported: 2014-04-11 16:50 UTC by renshaw
Modified: 2014-09-10 12:00 UTC (History)
2 users (show)

program illustrating the problem (424 bytes, text/x-c++src)
2014-04-11 16:50 UTC, renshaw
no flags Details

Description renshaw 2014-04-11 16:50:41 UTC
Created attachment 450 [details]
program illustrating the problem

JacobiSVD fails to terminate on this 3x3 matrix of doubles:

0, 2.22045e-16, 0.5,
0, -0.5, 0,
nan, 0, 0;

and on this 4x4 matrix matrix of doubles:

1, 0, 0, 0,
0, 3, 1, 2e-308,
1, 0, 1, nan,
0, nan, nan, 0;

The attached program illustrates this behavior.

We expect termination because the documentation claims that "the computation is guaranteed to terminate in finite (and reasonable) time"

I can reproduce the problem in revision 5877:732325de4d56.

(This issue was found as part of the ASTAA robustness testing project.)
Comment 1 Gael Guennebaud 2014-09-10 12:00:29 UTC
Fixed and back-ported to 3.2:
Changeset:   4a218338fff3
User:        ggael
Date:        2014-09-10 11:54:20
Summary:     Fix bug 791: infinite loop in JacobiSVD in the presence of NaN.
Changeset:   c57e23d06e4b
Branch:      3.2

Additional test:

Note You need to log in before you can comment on or make changes to this bug.