Use normwise criterion for INF eigenvalues in QZ (Reference-LAPACK PR698)

This commit is contained in:
Martin Kroeker 2022-11-20 13:22:55 +01:00 committed by GitHub
parent 1714d640f1
commit eea1636380
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 8 additions and 28 deletions

View File

@ -523,9 +523,7 @@
END IF END IF
END IF END IF
* *
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*( IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
$ ) ) ) ) THEN
T( ILAST, ILAST ) = CZERO T( ILAST, ILAST ) = CZERO
GO TO 50 GO TO 50
END IF END IF
@ -551,10 +549,7 @@
* *
* Test 2: for T(j,j)=0 * Test 2: for T(j,j)=0
* *
TEMP = ABS ( T( J, J + 1 ) ) IF( ABS( T( J, J ) ).LT.BTOL ) THEN
IF ( J .GT. ILO )
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
T( J, J ) = CZERO T( J, J ) = CZERO
* *
* Test 1a: Check for 2 consecutive small subdiagonals in A * Test 1a: Check for 2 consecutive small subdiagonals in A

View File

@ -536,9 +536,7 @@
END IF END IF
END IF END IF
* *
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*( IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
$ ) ) ) ) THEN
T( ILAST, ILAST ) = ZERO T( ILAST, ILAST ) = ZERO
GO TO 70 GO TO 70
END IF END IF
@ -564,10 +562,7 @@
* *
* Test 2: for T(j,j)=0 * Test 2: for T(j,j)=0
* *
TEMP = ABS ( T( J, J + 1 ) ) IF( ABS( T( J, J ) ).LT.BTOL ) THEN
IF ( J .GT. ILO )
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
T( J, J ) = ZERO T( J, J ) = ZERO
* *
* Test 1a: Check for 2 consecutive small subdiagonals in A * Test 1a: Check for 2 consecutive small subdiagonals in A

View File

@ -536,9 +536,7 @@
END IF END IF
END IF END IF
* *
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*( IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
$ ) ) ) ) THEN
T( ILAST, ILAST ) = ZERO T( ILAST, ILAST ) = ZERO
GO TO 70 GO TO 70
END IF END IF
@ -564,10 +562,7 @@
* *
* Test 2: for T(j,j)=0 * Test 2: for T(j,j)=0
* *
TEMP = ABS ( T( J, J + 1 ) ) IF( ABS( T( J, J ) ).LT.BTOL ) THEN
IF ( J .GT. ILO )
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
T( J, J ) = ZERO T( J, J ) = ZERO
* *
* Test 1a: Check for 2 consecutive small subdiagonals in A * Test 1a: Check for 2 consecutive small subdiagonals in A

View File

@ -524,9 +524,7 @@
END IF END IF
END IF END IF
* *
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*( IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
$ ) ) ) ) THEN
T( ILAST, ILAST ) = CZERO T( ILAST, ILAST ) = CZERO
GO TO 50 GO TO 50
END IF END IF
@ -552,10 +550,7 @@
* *
* Test 2: for T(j,j)=0 * Test 2: for T(j,j)=0
* *
TEMP = ABS ( T( J, J + 1 ) ) IF( ABS( T( J, J ) ).LT.BTOL ) THEN
IF ( J .GT. ILO )
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
T( J, J ) = CZERO T( J, J ) = CZERO
* *
* Test 1a: Check for 2 consecutive small subdiagonals in A * Test 1a: Check for 2 consecutive small subdiagonals in A