Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions CMAKE/LAPACKTestHelpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,17 @@ function(lapack_no_constant_propagation_flag out_var)
endif()
endfunction()

# Disable it for the ?errcxx drivers among ARGN, which manufacture their NaN
# with SQRT( -ONE ). Call this with every source list such a driver is built
# from: the generated _64 and _TEST copies need it as much as the originals.
# Disable it for the CXX error-exit and packed, banded and tridiagonal Cholesky tests among
# ARGN, which manufacture NaNs. Call this with every source list: the
# generated _64 and _TEST copies need it as much as the originals.
function(lapack_nag_disable_constant_propagation)
lapack_no_constant_propagation_flag(flag)
if(NOT flag)
return()
endif()
foreach(source IN LISTS ARGN)
get_filename_component(name "${source}" NAME)
if(name MATCHES "^[scdz]errcxx(_[A-Za-z0-9]+)*\\.f$")
if(name MATCHES "^[scdz](errcxx|chkp[tpb])(_[A-Za-z0-9]+)*\\.f$")
set_source_files_properties("${source}"
PROPERTIES COMPILE_OPTIONS "${flag}")
endif()
Expand Down
8 changes: 4 additions & 4 deletions SRC/cpbtf2.f
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,8 @@ SUBROUTINE CPBTF2( UPLO, N, KD, AB, LDAB, INFO )
REAL AJJ
* ..
* .. External Functions ..
LOGICAL LSAME
EXTERNAL LSAME
LOGICAL LSAME, SISNAN
EXTERNAL LSAME, SISNAN
* ..
* .. External Subroutines ..
EXTERNAL CHER, CLACGV, CSSCAL, XERBLA
Expand Down Expand Up @@ -208,7 +208,7 @@ SUBROUTINE CPBTF2( UPLO, N, KD, AB, LDAB, INFO )
* Compute U(J,J) and test for non-positive-definiteness.
*
AJJ = REAL( AB( KD+1, J ) )
IF( AJJ.LE.ZERO ) THEN
IF( AJJ.LE.ZERO.OR.SISNAN( AJJ ) ) THEN
AB( KD+1, J ) = AJJ
GO TO 30
END IF
Expand Down Expand Up @@ -236,7 +236,7 @@ SUBROUTINE CPBTF2( UPLO, N, KD, AB, LDAB, INFO )
* Compute L(J,J) and test for non-positive-definiteness.
*
AJJ = REAL( AB( 1, J ) )
IF( AJJ.LE.ZERO ) THEN
IF( AJJ.LE.ZERO.OR.SISNAN( AJJ ) ) THEN
AB( 1, J ) = AJJ
GO TO 30
END IF
Expand Down
8 changes: 4 additions & 4 deletions SRC/cpptrf.f
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,9 @@ SUBROUTINE CPPTRF( UPLO, N, AP, INFO )
REAL AJJ
* ..
* .. External Functions ..
LOGICAL LSAME
LOGICAL LSAME, SISNAN
COMPLEX CDOTC
EXTERNAL LSAME, CDOTC
EXTERNAL LSAME, CDOTC, SISNAN
* ..
* .. External Subroutines ..
EXTERNAL CHPR, CSSCAL, CTPSV, XERBLA
Expand Down Expand Up @@ -191,7 +191,7 @@ SUBROUTINE CPPTRF( UPLO, N, AP, INFO )
*
AJJ = REAL( REAL( AP( JJ ) ) - CDOTC( J-1,
$ AP( JC ), 1, AP( JC ), 1 ) )
IF( AJJ.LE.ZERO ) THEN
IF( AJJ.LE.ZERO.OR.SISNAN( AJJ ) ) THEN
AP( JJ ) = AJJ
GO TO 30
END IF
Expand All @@ -207,7 +207,7 @@ SUBROUTINE CPPTRF( UPLO, N, AP, INFO )
* Compute L(J,J) and test for non-positive-definiteness.
*
AJJ = REAL( AP( JJ ) )
IF( AJJ.LE.ZERO ) THEN
IF( AJJ.LE.ZERO.OR.SISNAN( AJJ ) ) THEN
AP( JJ ) = AJJ
GO TO 30
END IF
Expand Down
16 changes: 10 additions & 6 deletions SRC/cpttrf.f
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,10 @@ SUBROUTINE CPTTRF( N, D, E, INFO )
INTEGER I, I4
REAL EII, EIR, F, G
* ..
* .. External Functions ..
LOGICAL SISNAN
EXTERNAL SISNAN
* ..
* .. External Subroutines ..
EXTERNAL XERBLA
* ..
Expand All @@ -137,7 +141,7 @@ SUBROUTINE CPTTRF( N, D, E, INFO )
*
I4 = MOD( N-1, 4 )
DO 10 I = 1, I4
IF( D( I ).LE.ZERO ) THEN
IF( D( I ).LE.ZERO.OR.SISNAN( D( I ) ) ) THEN
INFO = I
GO TO 20
END IF
Expand All @@ -154,7 +158,7 @@ SUBROUTINE CPTTRF( N, D, E, INFO )
* Drop out of the loop if d(i) <= 0: the matrix is not positive
* definite.
*
IF( D( I ).LE.ZERO ) THEN
IF( D( I ).LE.ZERO.OR.SISNAN( D( I ) ) ) THEN
INFO = I
GO TO 20
END IF
Expand All @@ -168,7 +172,7 @@ SUBROUTINE CPTTRF( N, D, E, INFO )
E( I ) = CMPLX( F, G )
D( I+1 ) = D( I+1 ) - F*EIR - G*EII
*
IF( D( I+1 ).LE.ZERO ) THEN
IF( D( I+1 ).LE.ZERO.OR.SISNAN( D( I+1 ) ) ) THEN
INFO = I+1
GO TO 20
END IF
Expand All @@ -182,7 +186,7 @@ SUBROUTINE CPTTRF( N, D, E, INFO )
E( I+1 ) = CMPLX( F, G )
D( I+2 ) = D( I+2 ) - F*EIR - G*EII
*
IF( D( I+2 ).LE.ZERO ) THEN
IF( D( I+2 ).LE.ZERO.OR.SISNAN( D( I+2 ) ) ) THEN
INFO = I+2
GO TO 20
END IF
Expand All @@ -196,7 +200,7 @@ SUBROUTINE CPTTRF( N, D, E, INFO )
E( I+2 ) = CMPLX( F, G )
D( I+3 ) = D( I+3 ) - F*EIR - G*EII
*
IF( D( I+3 ).LE.ZERO ) THEN
IF( D( I+3 ).LE.ZERO.OR.SISNAN( D( I+3 ) ) ) THEN
INFO = I+3
GO TO 20
END IF
Expand All @@ -213,7 +217,7 @@ SUBROUTINE CPTTRF( N, D, E, INFO )
*
* Check d(n) for positive definiteness.
*
IF( D( N ).LE.ZERO )
IF( D( N ).LE.ZERO.OR.SISNAN( D( N ) ) )
$ INFO = N
*
20 CONTINUE
Expand Down
8 changes: 4 additions & 4 deletions SRC/dpbtf2.f
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,8 @@ SUBROUTINE DPBTF2( UPLO, N, KD, AB, LDAB, INFO )
DOUBLE PRECISION AJJ
* ..
* .. External Functions ..
LOGICAL LSAME
EXTERNAL LSAME
LOGICAL LSAME, DISNAN
EXTERNAL LSAME, DISNAN
* ..
* .. External Subroutines ..
EXTERNAL DSCAL, DSYR, XERBLA
Expand Down Expand Up @@ -208,7 +208,7 @@ SUBROUTINE DPBTF2( UPLO, N, KD, AB, LDAB, INFO )
* Compute U(J,J) and test for non-positive-definiteness.
*
AJJ = AB( KD+1, J )
IF( AJJ.LE.ZERO )
IF( AJJ.LE.ZERO.OR.DISNAN( AJJ ) )
$ GO TO 30
AJJ = SQRT( AJJ )
AB( KD+1, J ) = AJJ
Expand All @@ -232,7 +232,7 @@ SUBROUTINE DPBTF2( UPLO, N, KD, AB, LDAB, INFO )
* Compute L(J,J) and test for non-positive-definiteness.
*
AJJ = AB( 1, J )
IF( AJJ.LE.ZERO )
IF( AJJ.LE.ZERO.OR.DISNAN( AJJ ) )
$ GO TO 30
AJJ = SQRT( AJJ )
AB( 1, J ) = AJJ
Expand Down
8 changes: 4 additions & 4 deletions SRC/dpptrf.f
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,9 @@ SUBROUTINE DPPTRF( UPLO, N, AP, INFO )
DOUBLE PRECISION AJJ
* ..
* .. External Functions ..
LOGICAL LSAME
LOGICAL LSAME, DISNAN
DOUBLE PRECISION DDOT
EXTERNAL LSAME, DDOT
EXTERNAL LSAME, DDOT, DISNAN
* ..
* .. External Subroutines ..
EXTERNAL DSCAL, DSPR, DTPSV, XERBLA
Expand Down Expand Up @@ -189,7 +189,7 @@ SUBROUTINE DPPTRF( UPLO, N, AP, INFO )
* Compute U(J,J) and test for non-positive-definiteness.
*
AJJ = AP( JJ ) - DDOT( J-1, AP( JC ), 1, AP( JC ), 1 )
IF( AJJ.LE.ZERO ) THEN
IF( AJJ.LE.ZERO.OR.DISNAN( AJJ ) ) THEN
AP( JJ ) = AJJ
GO TO 30
END IF
Expand All @@ -205,7 +205,7 @@ SUBROUTINE DPPTRF( UPLO, N, AP, INFO )
* Compute L(J,J) and test for non-positive-definiteness.
*
AJJ = AP( JJ )
IF( AJJ.LE.ZERO ) THEN
IF( AJJ.LE.ZERO.OR.DISNAN( AJJ ) ) THEN
AP( JJ ) = AJJ
GO TO 30
END IF
Expand Down
16 changes: 10 additions & 6 deletions SRC/dpttrf.f
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,10 @@ SUBROUTINE DPTTRF( N, D, E, INFO )
INTEGER I, I4
DOUBLE PRECISION EI
* ..
* .. External Functions ..
LOGICAL DISNAN
EXTERNAL DISNAN
* ..
* .. External Subroutines ..
EXTERNAL XERBLA
* ..
Expand All @@ -135,7 +139,7 @@ SUBROUTINE DPTTRF( N, D, E, INFO )
*
I4 = MOD( N-1, 4 )
DO 10 I = 1, I4
IF( D( I ).LE.ZERO ) THEN
IF( D( I ).LE.ZERO.OR.DISNAN( D( I ) ) ) THEN
INFO = I
GO TO 30
END IF
Expand All @@ -149,7 +153,7 @@ SUBROUTINE DPTTRF( N, D, E, INFO )
* Drop out of the loop if d(i) <= 0: the matrix is not positive
* definite.
*
IF( D( I ).LE.ZERO ) THEN
IF( D( I ).LE.ZERO.OR.DISNAN( D( I ) ) ) THEN
INFO = I
GO TO 30
END IF
Expand All @@ -160,7 +164,7 @@ SUBROUTINE DPTTRF( N, D, E, INFO )
E( I ) = EI / D( I )
D( I+1 ) = D( I+1 ) - E( I )*EI
*
IF( D( I+1 ).LE.ZERO ) THEN
IF( D( I+1 ).LE.ZERO.OR.DISNAN( D( I+1 ) ) ) THEN
INFO = I + 1
GO TO 30
END IF
Expand All @@ -171,7 +175,7 @@ SUBROUTINE DPTTRF( N, D, E, INFO )
E( I+1 ) = EI / D( I+1 )
D( I+2 ) = D( I+2 ) - E( I+1 )*EI
*
IF( D( I+2 ).LE.ZERO ) THEN
IF( D( I+2 ).LE.ZERO.OR.DISNAN( D( I+2 ) ) ) THEN
INFO = I + 2
GO TO 30
END IF
Expand All @@ -182,7 +186,7 @@ SUBROUTINE DPTTRF( N, D, E, INFO )
E( I+2 ) = EI / D( I+2 )
D( I+3 ) = D( I+3 ) - E( I+2 )*EI
*
IF( D( I+3 ).LE.ZERO ) THEN
IF( D( I+3 ).LE.ZERO.OR.DISNAN( D( I+3 ) ) ) THEN
INFO = I + 3
GO TO 30
END IF
Expand All @@ -196,7 +200,7 @@ SUBROUTINE DPTTRF( N, D, E, INFO )
*
* Check d(n) for positive definiteness.
*
IF( D( N ).LE.ZERO )
IF( D( N ).LE.ZERO.OR.DISNAN( D( N ) ) )
$ INFO = N
*
30 CONTINUE
Expand Down
8 changes: 4 additions & 4 deletions SRC/spbtf2.f
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,8 @@ SUBROUTINE SPBTF2( UPLO, N, KD, AB, LDAB, INFO )
REAL AJJ
* ..
* .. External Functions ..
LOGICAL LSAME
EXTERNAL LSAME
LOGICAL LSAME, SISNAN
EXTERNAL LSAME, SISNAN
* ..
* .. External Subroutines ..
EXTERNAL SSCAL, SSYR, XERBLA
Expand Down Expand Up @@ -208,7 +208,7 @@ SUBROUTINE SPBTF2( UPLO, N, KD, AB, LDAB, INFO )
* Compute U(J,J) and test for non-positive-definiteness.
*
AJJ = AB( KD+1, J )
IF( AJJ.LE.ZERO )
IF( AJJ.LE.ZERO.OR.SISNAN( AJJ ) )
$ GO TO 30
AJJ = SQRT( AJJ )
AB( KD+1, J ) = AJJ
Expand All @@ -232,7 +232,7 @@ SUBROUTINE SPBTF2( UPLO, N, KD, AB, LDAB, INFO )
* Compute L(J,J) and test for non-positive-definiteness.
*
AJJ = AB( 1, J )
IF( AJJ.LE.ZERO )
IF( AJJ.LE.ZERO.OR.SISNAN( AJJ ) )
$ GO TO 30
AJJ = SQRT( AJJ )
AB( 1, J ) = AJJ
Expand Down
8 changes: 4 additions & 4 deletions SRC/spptrf.f
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,9 @@ SUBROUTINE SPPTRF( UPLO, N, AP, INFO )
REAL AJJ
* ..
* .. External Functions ..
LOGICAL LSAME
LOGICAL LSAME, SISNAN
REAL SDOT
EXTERNAL LSAME, SDOT
EXTERNAL LSAME, SDOT, SISNAN
* ..
* .. External Subroutines ..
EXTERNAL SSCAL, SSPR, STPSV, XERBLA
Expand Down Expand Up @@ -189,7 +189,7 @@ SUBROUTINE SPPTRF( UPLO, N, AP, INFO )
* Compute U(J,J) and test for non-positive-definiteness.
*
AJJ = AP( JJ ) - SDOT( J-1, AP( JC ), 1, AP( JC ), 1 )
IF( AJJ.LE.ZERO ) THEN
IF( AJJ.LE.ZERO.OR.SISNAN( AJJ ) ) THEN
AP( JJ ) = AJJ
GO TO 30
END IF
Expand All @@ -205,7 +205,7 @@ SUBROUTINE SPPTRF( UPLO, N, AP, INFO )
* Compute L(J,J) and test for non-positive-definiteness.
*
AJJ = AP( JJ )
IF( AJJ.LE.ZERO ) THEN
IF( AJJ.LE.ZERO.OR.SISNAN( AJJ ) ) THEN
AP( JJ ) = AJJ
GO TO 30
END IF
Expand Down
16 changes: 10 additions & 6 deletions SRC/spttrf.f
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,10 @@ SUBROUTINE SPTTRF( N, D, E, INFO )
INTEGER I, I4
REAL EI
* ..
* .. External Functions ..
LOGICAL SISNAN
EXTERNAL SISNAN
* ..
* .. External Subroutines ..
EXTERNAL XERBLA
* ..
Expand All @@ -135,7 +139,7 @@ SUBROUTINE SPTTRF( N, D, E, INFO )
*
I4 = MOD( N-1, 4 )
DO 10 I = 1, I4
IF( D( I ).LE.ZERO ) THEN
IF( D( I ).LE.ZERO.OR.SISNAN( D( I ) ) ) THEN
INFO = I
GO TO 30
END IF
Expand All @@ -149,7 +153,7 @@ SUBROUTINE SPTTRF( N, D, E, INFO )
* Drop out of the loop if d(i) <= 0: the matrix is not positive
* definite.
*
IF( D( I ).LE.ZERO ) THEN
IF( D( I ).LE.ZERO.OR.SISNAN( D( I ) ) ) THEN
INFO = I
GO TO 30
END IF
Expand All @@ -160,7 +164,7 @@ SUBROUTINE SPTTRF( N, D, E, INFO )
E( I ) = EI / D( I )
D( I+1 ) = D( I+1 ) - E( I )*EI
*
IF( D( I+1 ).LE.ZERO ) THEN
IF( D( I+1 ).LE.ZERO.OR.SISNAN( D( I+1 ) ) ) THEN
INFO = I + 1
GO TO 30
END IF
Expand All @@ -171,7 +175,7 @@ SUBROUTINE SPTTRF( N, D, E, INFO )
E( I+1 ) = EI / D( I+1 )
D( I+2 ) = D( I+2 ) - E( I+1 )*EI
*
IF( D( I+2 ).LE.ZERO ) THEN
IF( D( I+2 ).LE.ZERO.OR.SISNAN( D( I+2 ) ) ) THEN
INFO = I + 2
GO TO 30
END IF
Expand All @@ -182,7 +186,7 @@ SUBROUTINE SPTTRF( N, D, E, INFO )
E( I+2 ) = EI / D( I+2 )
D( I+3 ) = D( I+3 ) - E( I+2 )*EI
*
IF( D( I+3 ).LE.ZERO ) THEN
IF( D( I+3 ).LE.ZERO.OR.SISNAN( D( I+3 ) ) ) THEN
INFO = I + 3
GO TO 30
END IF
Expand All @@ -196,7 +200,7 @@ SUBROUTINE SPTTRF( N, D, E, INFO )
*
* Check d(n) for positive definiteness.
*
IF( D( N ).LE.ZERO )
IF( D( N ).LE.ZERO.OR.SISNAN( D( N ) ) )
$ INFO = N
*
30 CONTINUE
Expand Down
Loading
Loading