summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlangou <langou@users.noreply.github.com>2010-06-22 22:08:36 +0000
committerlangou <langou@users.noreply.github.com>2010-06-22 22:08:36 +0000
commit9d2ac5bb4d35890a66f0eaa48935de14366c8c9c (patch)
tree514a3001c4ec067a5b395a29bd74825981d15c33
parentcc91ce19dc8454d2129df767cadc8fa22dc7ba43 (diff)
downloadlapack-9d2ac5bb4d35890a66f0eaa48935de14366c8c9c.tar.gz
lapack-9d2ac5bb4d35890a66f0eaa48935de14366c8c9c.tar.bz2
lapack-9d2ac5bb4d35890a66f0eaa48935de14366c8c9c.zip
Corrected a bug in SBDSDC and DBDSDC.
The routine was returning with INFO = 0 while a failure of convergence should have been reported with INFO > 0. The bug has been around for quite a while and has been difficult to reproduce. More information: (*) bug0025 :: serious problem in DGESDD: DGESDD returns negative singular values with INFO = 0 o reported by Guy Bencteux on Sat Dec 06 2008 o see forum topic 847 o Julie : CANNOT REPRODUCE THE PROBLEM o on Sat Jun 19 2010, Bruno Pinçon from ESIAL, reported another matrix with the same problems o see forum topic 1868 o we can reproduce the problem with on MacOS with gfortran reference LAPACK and vecLib BLAS, we can not reproduce the problem with reference LAPACK and reference BLAS. o A patch has been proposed by Julien Langou. (See forum topic 1868.) o Under review by other lapackers. o Note: there is strong evidence that the bug of Guy Bencteux and this one are the same, although we were never able to reproduce Guy's problem. So we assume Guy's problem gone! (And send an email to Guy to inform him.)
-rw-r--r--SRC/dbdsdc.f6
-rw-r--r--SRC/sbdsdc.f6
2 files changed, 6 insertions, 6 deletions
diff --git a/SRC/dbdsdc.f b/SRC/dbdsdc.f
index 40185268..0af80cbd 100644
--- a/SRC/dbdsdc.f
+++ b/SRC/dbdsdc.f
@@ -368,9 +368,9 @@
$ Q( START+( IC+QSTART-2 )*N ),
$ Q( START+( IS+QSTART-2 )*N ),
$ WORK( WSTART ), IWORK, INFO )
- IF( INFO.NE.0 ) THEN
- RETURN
- END IF
+ END IF
+ IF( INFO.NE.0 ) THEN
+ RETURN
END IF
START = I + 1
END IF
diff --git a/SRC/sbdsdc.f b/SRC/sbdsdc.f
index 31c51a4f..58f08f59 100644
--- a/SRC/sbdsdc.f
+++ b/SRC/sbdsdc.f
@@ -367,9 +367,9 @@
$ Q( START+( IC+QSTART-2 )*N ),
$ Q( START+( IS+QSTART-2 )*N ),
$ WORK( WSTART ), IWORK, INFO )
- IF( INFO.NE.0 ) THEN
- RETURN
- END IF
+ END IF
+ IF( INFO.NE.0 ) THEN
+ RETURN
END IF
START = I + 1
END IF