Just to let you know that the bug you reported (bug0121) has been corrected in
rev 1505 on Oct 1st 2014.
The bug fix will be released in the coming LAPACK release. At the moment, it is
available in our SVN repository.
The bug has been traced to [d/s]laed6, which computes the root closest to the
origin of a secular equation and is used in the D&C tridiagonal eigensolver
(DSTEDC) and D&C least squares solver (DGELSD). We have interacted with
Ren-Cang Li (the original developer of [d/s]laed6) about possible fixes, and I
am attaching a new version of [d/s]laed6. This version has been tested with our
'torture cases' (more on this below) in:
- single and double precision
- Intel Xeon Westmere with gnu (gfortran) and intel (ifort) compilers
- AMD MagnyCours with pgi, cray, intel and gnu compilers
The bug was related to a too stringent tolerance convergence criterion, line
390 in laed6. The fix is
390 IF( ( ABS( F ).LE.FOUR*EPS*ERRETM ) .OR.
391 $ ( (UBD-LBD).LE.FOUR*EPS*ABS(TAU) ) )
390 IF( ABS( F ).LE.EPS*ERRETM )
Thank you again for reporting the issue!
On Sep 23, 2014, at 9:29 AM, julie <julie@Domain.Removed> wrote:
Thank you for the bug report, and the detailed explanation
We recorded the bug on our Errata as bug 121 -
We are going to take a look very shortly.
On Sep 22, 2014, at 10:22 AM, Justin (Weiguang Si) <forswg@Domain.Removed
We got a fatal error message "On entry to DLASD4 paramater number -1 had an
illegal value" when using IpOpt. We think this is due to a bug in Lapack.
The bug is in DLASD8 (see line 276 to line 284 of DLASD8
which calls DLASD4 and then handles the INFO =1 error return incorrectly.
The error indicates that DLASD4 failed to converge and should have been
reported as an INFO = 1 return to DLASD8's caller. It should not have been
passed to XERBLA. We also see similar bugs in DLASD6 (see line 414 to line
422 of DLASD6
DLASDA shows what we think is the correct behavior (see line 486 to line 507
Here it is just passing the info value from DLASD6 back as the info value
from DLASDA which is reasonable (setting info = 1 before returning might be
cleaner). This method allows the higher-level subroutine that called DLASDA
to recover from low-level convergence failure. We think that's the fix we
need done in DLASD8 and DLASD6.
Thanks a lot for your attention.
Justin (Weiguang Si)
Neuromuscular Biomechanics Lab
Lapack mailing list
-------------- next part --------------
An HTML attachment was scrubbed...