Merge pull request #3830 from martin-frbg/lapack691+698
Add quick return in ?LASCL; use normwise criterion for INF in QZ; fix workspace calcn for ?SYEVD (Reference-LAPACK PRs 674+691+698)
This commit is contained in:
commit
b1102fe250
|
@ -284,7 +284,7 @@
|
|||
LIWMIN = 1
|
||||
END IF
|
||||
LOPT = MAX( LWMIN, N +
|
||||
$ ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 ) )
|
||||
$ N*ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 ) )
|
||||
LROPT = LRWMIN
|
||||
LIOPT = LIWMIN
|
||||
END IF
|
||||
|
|
|
@ -523,9 +523,7 @@
|
|||
END IF
|
||||
END IF
|
||||
*
|
||||
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
|
||||
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
|
||||
$ ) ) ) ) THEN
|
||||
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
|
||||
T( ILAST, ILAST ) = CZERO
|
||||
GO TO 50
|
||||
END IF
|
||||
|
@ -551,10 +549,7 @@
|
|||
*
|
||||
* Test 2: for T(j,j)=0
|
||||
*
|
||||
TEMP = ABS ( T( J, J + 1 ) )
|
||||
IF ( J .GT. ILO )
|
||||
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
|
||||
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
|
||||
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
|
||||
T( J, J ) = CZERO
|
||||
*
|
||||
* Test 1a: Check for 2 consecutive small subdiagonals in A
|
||||
|
|
|
@ -272,6 +272,8 @@
|
|||
ELSE
|
||||
MUL = CTOC / CFROMC
|
||||
DONE = .TRUE.
|
||||
IF (MUL .EQ. ONE)
|
||||
$ RETURN
|
||||
END IF
|
||||
END IF
|
||||
*
|
||||
|
|
|
@ -536,9 +536,7 @@
|
|||
END IF
|
||||
END IF
|
||||
*
|
||||
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
|
||||
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
|
||||
$ ) ) ) ) THEN
|
||||
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
|
||||
T( ILAST, ILAST ) = ZERO
|
||||
GO TO 70
|
||||
END IF
|
||||
|
@ -564,10 +562,7 @@
|
|||
*
|
||||
* Test 2: for T(j,j)=0
|
||||
*
|
||||
TEMP = ABS ( T( J, J + 1 ) )
|
||||
IF ( J .GT. ILO )
|
||||
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
|
||||
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
|
||||
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
|
||||
T( J, J ) = ZERO
|
||||
*
|
||||
* Test 1a: Check for 2 consecutive small subdiagonals in A
|
||||
|
|
|
@ -272,6 +272,8 @@
|
|||
ELSE
|
||||
MUL = CTOC / CFROMC
|
||||
DONE = .TRUE.
|
||||
IF (MUL .EQ. ONE)
|
||||
$ RETURN
|
||||
END IF
|
||||
END IF
|
||||
*
|
||||
|
|
|
@ -257,7 +257,7 @@
|
|||
LWMIN = 2*N + 1
|
||||
END IF
|
||||
LOPT = MAX( LWMIN, 2*N +
|
||||
$ ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 ) )
|
||||
$ N*ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 ) )
|
||||
LIOPT = LIWMIN
|
||||
END IF
|
||||
WORK( 1 ) = LOPT
|
||||
|
|
|
@ -536,9 +536,7 @@
|
|||
END IF
|
||||
END IF
|
||||
*
|
||||
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
|
||||
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
|
||||
$ ) ) ) ) THEN
|
||||
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
|
||||
T( ILAST, ILAST ) = ZERO
|
||||
GO TO 70
|
||||
END IF
|
||||
|
@ -564,10 +562,7 @@
|
|||
*
|
||||
* Test 2: for T(j,j)=0
|
||||
*
|
||||
TEMP = ABS ( T( J, J + 1 ) )
|
||||
IF ( J .GT. ILO )
|
||||
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
|
||||
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
|
||||
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
|
||||
T( J, J ) = ZERO
|
||||
*
|
||||
* Test 1a: Check for 2 consecutive small subdiagonals in A
|
||||
|
|
|
@ -272,6 +272,8 @@
|
|||
ELSE
|
||||
MUL = CTOC / CFROMC
|
||||
DONE = .TRUE.
|
||||
IF (MUL .EQ. ONE)
|
||||
$ RETURN
|
||||
END IF
|
||||
END IF
|
||||
*
|
||||
|
|
|
@ -255,7 +255,7 @@
|
|||
LWMIN = 2*N + 1
|
||||
END IF
|
||||
LOPT = MAX( LWMIN, 2*N +
|
||||
$ ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) )
|
||||
$ N*ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) )
|
||||
LIOPT = LIWMIN
|
||||
END IF
|
||||
WORK( 1 ) = LOPT
|
||||
|
|
|
@ -284,7 +284,7 @@
|
|||
LIWMIN = 1
|
||||
END IF
|
||||
LOPT = MAX( LWMIN, N +
|
||||
$ ILAENV( 1, 'ZHETRD', UPLO, N, -1, -1, -1 ) )
|
||||
$ N*ILAENV( 1, 'ZHETRD', UPLO, N, -1, -1, -1 ) )
|
||||
LROPT = LRWMIN
|
||||
LIOPT = LIWMIN
|
||||
END IF
|
||||
|
|
|
@ -524,9 +524,7 @@
|
|||
END IF
|
||||
END IF
|
||||
*
|
||||
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
|
||||
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
|
||||
$ ) ) ) ) THEN
|
||||
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
|
||||
T( ILAST, ILAST ) = CZERO
|
||||
GO TO 50
|
||||
END IF
|
||||
|
@ -552,10 +550,7 @@
|
|||
*
|
||||
* Test 2: for T(j,j)=0
|
||||
*
|
||||
TEMP = ABS ( T( J, J + 1 ) )
|
||||
IF ( J .GT. ILO )
|
||||
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
|
||||
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
|
||||
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
|
||||
T( J, J ) = CZERO
|
||||
*
|
||||
* Test 1a: Check for 2 consecutive small subdiagonals in A
|
||||
|
|
|
@ -272,6 +272,8 @@
|
|||
ELSE
|
||||
MUL = CTOC / CFROMC
|
||||
DONE = .TRUE.
|
||||
IF (MUL .EQ. ONE)
|
||||
$ RETURN
|
||||
END IF
|
||||
END IF
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue