Systematically return with INFO=1 when the root finder failed.
authorphilippe.theveny <philippe.theveny@8a072113-8704-0410-8d35-dd094bca7971>
Fri, 6 Feb 2015 20:31:47 +0000 (20:31 +0000)
committerphilippe.theveny <philippe.theveny@8a072113-8704-0410-8d35-dd094bca7971>
Fri, 6 Feb 2015 20:31:47 +0000 (20:31 +0000)
This corresponds to the documentation of [d/s]lasdx routines and fixes bug121
reported Justin Si.

SRC/dlasd0.f
SRC/dlasd1.f
SRC/dlasd3.f
SRC/dlasd6.f
SRC/dlasd8.f
SRC/slasd0.f
SRC/slasd1.f
SRC/slasd3.f
SRC/slasd6.f
SRC/slasd8.f

index 735e630..6d9a24e 100644 (file)
             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
index 8b8ae08..6e9e6e9 100644 (file)
      $             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
index 8a07389..ba5998b 100644 (file)
          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
index 8b0f8d5..d5ecb59 100644 (file)
       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
 *
index 60275e7..00bf80a 100644 (file)
          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 )
index b04a32d..b2d3e8b 100644 (file)
             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
index b076fca..080368e 100644 (file)
      $             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
index 1ad481c..5833b65 100644 (file)
          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
index 45b3ab1..3fe2c16 100644 (file)
       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
 *
index c80d7cd..be22369 100644 (file)
          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 )