summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorphilippe.theveny <philippe.theveny@8a072113-8704-0410-8d35-dd094bca7971>2015-02-06 20:31:47 +0000
committerphilippe.theveny <philippe.theveny@8a072113-8704-0410-8d35-dd094bca7971>2015-02-06 20:31:47 +0000
commit2cbabfbc388056bcf3a8aaff0a977deea8f6b3c2 (patch)
treeb3497e95d8ca78b158442e2976079d195fc9523a
parentec7a8aeaa1646a1b1879aef0eea83cdc5222ad70 (diff)
downloadlapack-2cbabfbc388056bcf3a8aaff0a977deea8f6b3c2.tar.gz
lapack-2cbabfbc388056bcf3a8aaff0a977deea8f6b3c2.tar.bz2
lapack-2cbabfbc388056bcf3a8aaff0a977deea8f6b3c2.zip
Systematically return with INFO=1 when the root finder failed.
This corresponds to the documentation of [d/s]lasdx routines and fixes bug121 reported Justin Si.
-rw-r--r--SRC/dlasd0.f3
-rw-r--r--SRC/dlasd1.f3
-rw-r--r--SRC/dlasd3.f2
-rw-r--r--SRC/dlasd6.f3
-rw-r--r--SRC/dlasd8.f3
-rw-r--r--SRC/slasd0.f3
-rw-r--r--SRC/slasd1.f3
-rw-r--r--SRC/slasd3.f2
-rw-r--r--SRC/slasd6.f3
-rw-r--r--SRC/slasd8.f3
10 files changed, 18 insertions, 10 deletions
diff --git a/SRC/dlasd0.f b/SRC/dlasd0.f
index 735e630e..6d9a24e5 100644
--- a/SRC/dlasd0.f
+++ b/SRC/dlasd0.f
@@ -302,6 +302,9 @@
CALL DLASD1( NL, NR, SQREI, D( NLF ), ALPHA, BETA,
$ U( NLF, NLF ), LDU, VT( NLF, NLF ), LDVT,
$ IWORK( IDXQC ), IWORK( IWK ), WORK, INFO )
+*
+* Report the possible convergence failure.
+*
IF( INFO.NE.0 ) THEN
RETURN
END IF
diff --git a/SRC/dlasd1.f b/SRC/dlasd1.f
index 8b8ae08b..6e9e6e9e 100644
--- a/SRC/dlasd1.f
+++ b/SRC/dlasd1.f
@@ -302,6 +302,9 @@
$ U, LDU, WORK( IU2 ), LDU2, VT, LDVT, WORK( IVT2 ),
$ LDVT2, IWORK( IDXC ), IWORK( COLTYP ), WORK( IZ ),
$ INFO )
+*
+* Report the convergence failure.
+*
IF( INFO.NE.0 ) THEN
RETURN
END IF
diff --git a/SRC/dlasd3.f b/SRC/dlasd3.f
index 8a073893..ba5998bd 100644
--- a/SRC/dlasd3.f
+++ b/SRC/dlasd3.f
@@ -351,7 +351,7 @@
CALL DLASD4( K, J, DSIGMA, Z, U( 1, J ), RHO, D( J ),
$ VT( 1, J ), INFO )
*
-* If the zero finder fails, the computation is terminated.
+* If the zero finder fails, report the convergence failure.
*
IF( INFO.NE.0 ) THEN
RETURN
diff --git a/SRC/dlasd6.f b/SRC/dlasd6.f
index 8b0f8d57..d5ecb59b 100644
--- a/SRC/dlasd6.f
+++ b/SRC/dlasd6.f
@@ -414,10 +414,9 @@
CALL DLASD8( ICOMPQ, K, D, Z, VF, VL, DIFL, DIFR, LDGNUM,
$ WORK( ISIGMA ), WORK( IW ), INFO )
*
-* Handle error returned
+* Report the possible convergence failure.
*
IF( INFO.NE.0 ) THEN
- CALL XERBLA( 'DLASD8', -INFO )
RETURN
END IF
*
diff --git a/SRC/dlasd8.f b/SRC/dlasd8.f
index 60275e7f..00bf80a0 100644
--- a/SRC/dlasd8.f
+++ b/SRC/dlasd8.f
@@ -276,10 +276,9 @@
CALL DLASD4( K, J, DSIGMA, Z, WORK( IWK1 ), RHO, D( J ),
$ WORK( IWK2 ), INFO )
*
-* If the root finder fails, the computation is terminated.
+* If the root finder fails, report the convergence failure.
*
IF( INFO.NE.0 ) THEN
- CALL XERBLA( 'DLASD4', -INFO )
RETURN
END IF
WORK( IWK3I+J ) = WORK( IWK3I+J )*WORK( J )*WORK( IWK2I+J )
diff --git a/SRC/slasd0.f b/SRC/slasd0.f
index b04a32dc..b2d3e8bb 100644
--- a/SRC/slasd0.f
+++ b/SRC/slasd0.f
@@ -300,6 +300,9 @@
CALL SLASD1( NL, NR, SQREI, D( NLF ), ALPHA, BETA,
$ U( NLF, NLF ), LDU, VT( NLF, NLF ), LDVT,
$ IWORK( IDXQC ), IWORK( IWK ), WORK, INFO )
+*
+* Report the possible convergence failure.
+*
IF( INFO.NE.0 ) THEN
RETURN
END IF
diff --git a/SRC/slasd1.f b/SRC/slasd1.f
index b076fca7..080368e7 100644
--- a/SRC/slasd1.f
+++ b/SRC/slasd1.f
@@ -302,6 +302,9 @@
$ U, LDU, WORK( IU2 ), LDU2, VT, LDVT, WORK( IVT2 ),
$ LDVT2, IWORK( IDXC ), IWORK( COLTYP ), WORK( IZ ),
$ INFO )
+*
+* Report the possible convergence failure.
+*
IF( INFO.NE.0 ) THEN
RETURN
END IF
diff --git a/SRC/slasd3.f b/SRC/slasd3.f
index 1ad481ce..5833b654 100644
--- a/SRC/slasd3.f
+++ b/SRC/slasd3.f
@@ -351,7 +351,7 @@
CALL SLASD4( K, J, DSIGMA, Z, U( 1, J ), RHO, D( J ),
$ VT( 1, J ), INFO )
*
-* If the zero finder fails, the computation is terminated.
+* If the zero finder fails, report convergence the failure.
*
IF( INFO.NE.0 ) THEN
RETURN
diff --git a/SRC/slasd6.f b/SRC/slasd6.f
index 45b3ab10..3fe2c163 100644
--- a/SRC/slasd6.f
+++ b/SRC/slasd6.f
@@ -414,10 +414,9 @@
CALL SLASD8( ICOMPQ, K, D, Z, VF, VL, DIFL, DIFR, LDGNUM,
$ WORK( ISIGMA ), WORK( IW ), INFO )
*
-* Handle error returned
+* Report the possible convergence failure.
*
IF( INFO.NE.0 ) THEN
- CALL XERBLA( 'SLASD8', -INFO )
RETURN
END IF
*
diff --git a/SRC/slasd8.f b/SRC/slasd8.f
index c80d7cdf..be223699 100644
--- a/SRC/slasd8.f
+++ b/SRC/slasd8.f
@@ -276,10 +276,9 @@
CALL SLASD4( K, J, DSIGMA, Z, WORK( IWK1 ), RHO, D( J ),
$ WORK( IWK2 ), INFO )
*
-* If the root finder fails, the computation is terminated.
+* If the root finder fails, report the convergence failure.
*
IF( INFO.NE.0 ) THEN
- CALL XERBLA( 'SLASD4', -INFO )
RETURN
END IF
WORK( IWK3I+J ) = WORK( IWK3I+J )*WORK( J )*WORK( IWK2I+J )