Page 1 of 1

DBDSDC returns non-orthogonal U

PostPosted: Mon Apr 04, 2011 11:41 am
by duncanpo
Hello,

I have come across a case when DBDSDC returns U and VT outputs that are not quite orthogonal in LAPACK 3.3.0. See the attached test program.
For this particular matrix in the test, UT*U has elements in the order of 1e-9. I am expecting if U is orthogonal, UT*U should be at round-off level, in the order of 1e-16.
Note this behavior is only seen in LAPACK 3.3.0. In LAPACK 3.2, DBDSDC returns INFO>0 as it fails to converge.

Thanks.

Duncan

Re: DBDSDC returns non-orthogonal U (*updated*)

PostPosted: Tue Apr 05, 2011 2:58 pm
by rodney
This problem can apparently be fixed by changing line 290 in dbdsdc.f:

- EPS = DLAMCH( 'Epsilon' )
+ EPS = 0.9*DLAMCH( 'Epsilon' )

The LAPACK SVN repository has been updated with this change for dbdsdc.f

The test problem with this change returns:

Info from dbdsdc is: 0
max difference between u'*u and identity matrix is: 2.22045e-15

(edited 7 April to reflect the improved fix that is now included in the svn repository)

--Rodney