New user self-registration is disabled due to spam. Please email eigen-core-team @ lists.tuxfamily.org if you need an account.
Before reporting a bug, please make sure that your Eigen version is up-to-date!

Bug 791

Summary: Jacobi SVD fails to terminate on certain matrices containing NaN
Product: Eigen Reporter: renshaw
Component: SVDAssignee: Nobody <eigen.nobody>
Status: RESOLVED FIXED    
Severity: Wrong Result CC: gael.guennebaud, jitseniesen
Priority: Normal    
Version: 3.2   
Hardware: x86 - 64-bit   
OS: Linux   
Whiteboard:
Bug Depends on:    
Bug Blocks: 558    
Attachments:
Description Flags
program illustrating the problem none

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:

https://bitbucket.org/eigen/eigen/commits/4a218338fff3/
Changeset:   4a218338fff3
User:        ggael
Date:        2014-09-10 11:54:20
Summary:     Fix bug 791: infinite loop in JacobiSVD in the presence of NaN.

https://bitbucket.org/eigen/eigen/commits/c57e23d06e4b/
Changeset:   c57e23d06e4b
Branch:      3.2

Additional test:
https://bitbucket.org/eigen/eigen/commits/13edc10411a4/