Apply fix sent by Elena Ivanova (Oracle)
authorjulie <julielangou@users.noreply.github.com>
Fri, 13 Sep 2013 21:32:40 +0000 (21:32 +0000)
committerjulie <julielangou@users.noreply.github.com>
Fri, 13 Sep 2013 21:32:40 +0000 (21:32 +0000)
There is FPE in the 457th line of CDRVRFP:
cdrvrfp.f
(dbx) where
=>[1] cdrvrfp(nout = 6, nn = 9, nval = ARRAY, nns = 3, nsval = ARRAY, nnt = 9, ntval = ARRAY, thresh = 30.0, a = ARRAY, asav = ARRAY, afac = ARRAY, ainv = ARRAY, b = ARRAY, bsav = ARRAY, xact = ARRAY, x = ARRAY, arf = ARRAY, arfinv = ARRAY, c_work_clatms = ARRAY, c_work_cpot02 = ARRAY, c_work_cpot03 = ARRAY, s_work_clatms = ARRAY, s_work_clanhe = ARRAY, s_work_cpot01 = ARRAY, s_work_cpot02 = ARRAY, s_work_cpot03 = ARRAY), line 457 in "cdrvrfp.f"

MAIN(), line 244 in "cchkrfp.f"
When N=0, attempt to calculate a condition number → FPE, because we try to delete by zero (ANORM = 0.0, AINVNM = 0.0) in the 457th line:
Line 457:
      RCONDC = ( ONE / ANORM ) / AINVNM

TESTING/LIN/cdrvrfp.f
TESTING/LIN/ddrvrfp.f
TESTING/LIN/sdrvrfp.f
TESTING/LIN/zdrvrfp.f

index 17884c555f957dbea04c6b4b01e3063d74bd966c..b35903a1e5ba0d2147736b5d92763a4dec763a2d 100644 (file)
 *
 *                       Compute the 1-norm condition number of A.
 *
-                        AINVNM = CLANHE( '1', UPLO, N, A, LDA,
+                                       IF ( N .NE. 0 ) THEN
+                           AINVNM = CLANHE( '1', UPLO, N, A, LDA,
      +                           S_WORK_CLANHE )
-                        RCONDC = ( ONE / ANORM ) / AINVNM
+                           RCONDC = ( ONE / ANORM ) / AINVNM
 *
-*                       Restore the matrix A.
+*                          Restore the matrix A.
 *
                         CALL CLACPY( UPLO, N, N, ASAV, LDA, A, LDA )
+                        END IF
+
 *
                      END IF
 *
index 904ec5614707721f5e969b046e620bb17dfd1651..3d65f830bf1dd1eb170114ba74a28bfacdd4f887 100644 (file)
 *                       Form the inverse of A.
 *
                         CALL DPOTRI( UPLO, N, A, LDA, INFO )
+
+                                       IF ( N .NE. 0 ) THEN
+
 *
-*                       Compute the 1-norm condition number of A.
+*                          Compute the 1-norm condition number of A.
 *
-                        AINVNM = DLANSY( '1', UPLO, N, A, LDA,
+                           AINVNM = DLANSY( '1', UPLO, N, A, LDA,
      +                           D_WORK_DLANSY )
-                        RCONDC = ( ONE / ANORM ) / AINVNM
+                           RCONDC = ( ONE / ANORM ) / AINVNM
 *
-*                       Restore the matrix A.
+*                          Restore the matrix A.
 *
-                        CALL DLACPY( UPLO, N, N, ASAV, LDA, A, LDA )
+                           CALL DLACPY( UPLO, N, N, ASAV, LDA, A, LDA )
+                        END IF
 *
                      END IF
 *
index 2a73e17be6fbac27cd44ac19c673ea1ededd4e30..dc06fcf0ac85829dec2fd9ec5d92d0ba79314c29 100644 (file)
 *                       Form the inverse of A.
 *
                         CALL SPOTRI( UPLO, N, A, LDA, INFO )
+
+                                       IF ( N .NE. 0 ) THEN
 *
-*                       Compute the 1-norm condition number of A.
+*                          Compute the 1-norm condition number of A.
 *
-                        AINVNM = SLANSY( '1', UPLO, N, A, LDA,
+                           AINVNM = SLANSY( '1', UPLO, N, A, LDA,
      +                           S_WORK_SLANSY )
-                        RCONDC = ( ONE / ANORM ) / AINVNM
+                           RCONDC = ( ONE / ANORM ) / AINVNM
 *
-*                       Restore the matrix A.
+*                          Restore the matrix A.
 *
-                        CALL SLACPY( UPLO, N, N, ASAV, LDA, A, LDA )
+                           CALL SLACPY( UPLO, N, N, ASAV, LDA, A, LDA )
+                        END IF
 *
                      END IF
 *
index a93f18e74aca27f91fab82901693718e87297b30..87ba6ac03e4f4d570fe09e75880705ca5a820629 100644 (file)
 *                       Form the inverse of A.
 *
                         CALL ZPOTRI( UPLO, N, A, LDA, INFO )
+
+                                       IF ( N .NE. 0 ) THEN
 *
-*                       Compute the 1-norm condition number of A.
+*                          Compute the 1-norm condition number of A.
 *
-                        AINVNM = ZLANHE( '1', UPLO, N, A, LDA,
+                           AINVNM = ZLANHE( '1', UPLO, N, A, LDA,
      +                           D_WORK_ZLANHE )
-                        RCONDC = ( ONE / ANORM ) / AINVNM
+                           RCONDC = ( ONE / ANORM ) / AINVNM
 *
-*                       Restore the matrix A.
+*                          Restore the matrix A.
 *
-                        CALL ZLACPY( UPLO, N, N, ASAV, LDA, A, LDA )
+                           CALL ZLACPY( UPLO, N, N, ASAV, LDA, A, LDA )
+                        END IF
 *
                      END IF
 *