Skip to content

Commit c699406

Browse files
committed
Use normwise criterion for inf eigenvalues in QZ
1 parent 3381a0e commit c699406

File tree

4 files changed

+8
-28
lines changed

4 files changed

+8
-28
lines changed

SRC/chgeqz.f

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -523,9 +523,7 @@ SUBROUTINE CHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
523523
END IF
524524
END IF
525525
*
526-
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
527-
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
528-
$ ) ) ) ) THEN
526+
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
529527
T( ILAST, ILAST ) = CZERO
530528
GO TO 50
531529
END IF
@@ -551,10 +549,7 @@ SUBROUTINE CHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
551549
*
552550
* Test 2: for T(j,j)=0
553551
*
554-
TEMP = ABS ( T( J, J + 1 ) )
555-
IF ( J .GT. ILO )
556-
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
557-
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
552+
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
558553
T( J, J ) = CZERO
559554
*
560555
* Test 1a: Check for 2 consecutive small subdiagonals in A

SRC/dhgeqz.f

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -536,9 +536,7 @@ SUBROUTINE DHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
536536
END IF
537537
END IF
538538
*
539-
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
540-
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
541-
$ ) ) ) ) THEN
539+
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
542540
T( ILAST, ILAST ) = ZERO
543541
GO TO 70
544542
END IF
@@ -564,10 +562,7 @@ SUBROUTINE DHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
564562
*
565563
* Test 2: for T(j,j)=0
566564
*
567-
TEMP = ABS ( T( J, J + 1 ) )
568-
IF ( J .GT. ILO )
569-
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
570-
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
565+
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
571566
T( J, J ) = ZERO
572567
*
573568
* Test 1a: Check for 2 consecutive small subdiagonals in A

SRC/shgeqz.f

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -536,9 +536,7 @@ SUBROUTINE SHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
536536
END IF
537537
END IF
538538
*
539-
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
540-
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
541-
$ ) ) ) ) THEN
539+
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
542540
T( ILAST, ILAST ) = ZERO
543541
GO TO 70
544542
END IF
@@ -564,10 +562,7 @@ SUBROUTINE SHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
564562
*
565563
* Test 2: for T(j,j)=0
566564
*
567-
TEMP = ABS ( T( J, J + 1 ) )
568-
IF ( J .GT. ILO )
569-
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
570-
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
565+
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
571566
T( J, J ) = ZERO
572567
*
573568
* Test 1a: Check for 2 consecutive small subdiagonals in A

SRC/zhgeqz.f

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -524,9 +524,7 @@ SUBROUTINE ZHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
524524
END IF
525525
END IF
526526
*
527-
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
528-
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
529-
$ ) ) ) ) THEN
527+
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
530528
T( ILAST, ILAST ) = CZERO
531529
GO TO 50
532530
END IF
@@ -552,10 +550,7 @@ SUBROUTINE ZHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
552550
*
553551
* Test 2: for T(j,j)=0
554552
*
555-
TEMP = ABS ( T( J, J + 1 ) )
556-
IF ( J .GT. ILO )
557-
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
558-
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
553+
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
559554
T( J, J ) = CZERO
560555
*
561556
* Test 1a: Check for 2 consecutive small subdiagonals in A

0 commit comments

Comments
 (0)