Skip to content

Commit 93fd62f

Browse files
committed
Revert "improve deflation criterion in xhgeqz"
This reverts commit 868da61.
1 parent 6811c56 commit 93fd62f

File tree

4 files changed

+16
-52
lines changed

4 files changed

+16
-52
lines changed

SRC/chgeqz.f

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -518,17 +518,13 @@ SUBROUTINE CHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
518518
IF( ILAST.EQ.ILO ) THEN
519519
GO TO 60
520520
ELSE
521-
IF( ABS1( H( ILAST, ILAST-1 ) ).LE.MAX( SAFMIN, ULP*(
522-
$ ABS1( H( ILAST, ILAST ) ) + ABS1( H( ILAST-1, ILAST-1 )
523-
$ ) ) ) ) THEN
521+
IF( ABS1( H( ILAST, ILAST-1 ) ).LE.ATOL ) THEN
524522
H( ILAST, ILAST-1 ) = CZERO
525523
GO TO 60
526524
END IF
527525
END IF
528526
*
529-
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
530-
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
531-
$ ) ) ) ) THEN
527+
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
532528
T( ILAST, ILAST ) = CZERO
533529
GO TO 50
534530
END IF
@@ -542,9 +538,7 @@ SUBROUTINE CHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
542538
IF( J.EQ.ILO ) THEN
543539
ILAZRO = .TRUE.
544540
ELSE
545-
IF( ABS1( H( J, J-1 ) ).LE.MAX( SAFMIN, ULP*(
546-
$ ABS1( H( J, J ) ) + ABS1( H( J-1, J-1 ) )
547-
$ ) ) ) THEN
541+
IF( ABS1( H( J, J-1 ) ).LE.ATOL ) THEN
548542
H( J, J-1 ) = CZERO
549543
ILAZRO = .TRUE.
550544
ELSE
@@ -554,10 +548,7 @@ SUBROUTINE CHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
554548
*
555549
* Test 2: for T(j,j)=0
556550
*
557-
TEMP = ABS ( T( J, J + 1 ) )
558-
IF ( J .GT. ILO )
559-
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
560-
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
551+
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
561552
T( J, J ) = CZERO
562553
*
563554
* Test 1a: Check for 2 consecutive small subdiagonals in A

SRC/dhgeqz.f

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -531,17 +531,13 @@ SUBROUTINE DHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
531531
*
532532
GO TO 80
533533
ELSE
534-
IF( ABS( H( ILAST, ILAST-1 ) ).LE.MAX( SAFMIN, ULP*(
535-
$ ABS( H( ILAST, ILAST ) ) + ABS( H( ILAST-1, ILAST-1 ) )
536-
$ ) ) ) THEN
534+
IF( ABS( H( ILAST, ILAST-1 ) ).LE.ATOL ) THEN
537535
H( ILAST, ILAST-1 ) = ZERO
538536
GO TO 80
539537
END IF
540538
END IF
541539
*
542-
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
543-
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
544-
$ ) ) ) ) THEN
540+
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
545541
T( ILAST, ILAST ) = ZERO
546542
GO TO 70
547543
END IF
@@ -555,9 +551,7 @@ SUBROUTINE DHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
555551
IF( J.EQ.ILO ) THEN
556552
ILAZRO = .TRUE.
557553
ELSE
558-
IF( ABS( H( J, J-1 ) ).LE.MAX( SAFMIN, ULP*(
559-
$ ABS( H( J, J ) ) + ABS( H( J-1, J-1 ) )
560-
$ ) ) ) THEN
554+
IF( ABS( H( J, J-1 ) ).LE.ATOL ) THEN
561555
H( J, J-1 ) = ZERO
562556
ILAZRO = .TRUE.
563557
ELSE
@@ -567,10 +561,7 @@ SUBROUTINE DHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
567561
*
568562
* Test 2: for T(j,j)=0
569563
*
570-
TEMP = ABS ( T( J, J + 1 ) )
571-
IF ( J .GT. ILO )
572-
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
573-
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
564+
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
574565
T( J, J ) = ZERO
575566
*
576567
* Test 1a: Check for 2 consecutive small subdiagonals in A

SRC/shgeqz.f

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -531,17 +531,13 @@ SUBROUTINE SHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
531531
*
532532
GO TO 80
533533
ELSE
534-
IF( ABS( H( ILAST, ILAST-1 ) ).LE.MAX( SAFMIN, ULP*(
535-
$ ABS( H( ILAST, ILAST ) ) + ABS( H( ILAST-1, ILAST-1 ) )
536-
$ ) ) ) THEN
534+
IF( ABS( H( ILAST, ILAST-1 ) ).LE.ATOL ) THEN
537535
H( ILAST, ILAST-1 ) = ZERO
538536
GO TO 80
539537
END IF
540538
END IF
541539
*
542-
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
543-
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
544-
$ ) ) ) ) THEN
540+
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
545541
T( ILAST, ILAST ) = ZERO
546542
GO TO 70
547543
END IF
@@ -555,9 +551,7 @@ SUBROUTINE SHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
555551
IF( J.EQ.ILO ) THEN
556552
ILAZRO = .TRUE.
557553
ELSE
558-
IF( ABS( H( J, J-1 ) ).LE.MAX( SAFMIN, ULP*(
559-
$ ABS( H( J, J ) ) + ABS( H( J-1, J-1 ) )
560-
$ ) ) ) THEN
554+
IF( ABS( H( J, J-1 ) ).LE.ATOL ) THEN
561555
H( J, J-1 ) = ZERO
562556
ILAZRO = .TRUE.
563557
ELSE
@@ -567,10 +561,7 @@ SUBROUTINE SHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
567561
*
568562
* Test 2: for T(j,j)=0
569563
*
570-
TEMP = ABS ( T( J, J + 1 ) )
571-
IF ( J .GT. ILO )
572-
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
573-
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
564+
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
574565
T( J, J ) = ZERO
575566
*
576567
* Test 1a: Check for 2 consecutive small subdiagonals in A

SRC/zhgeqz.f

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -519,17 +519,13 @@ SUBROUTINE ZHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
519519
IF( ILAST.EQ.ILO ) THEN
520520
GO TO 60
521521
ELSE
522-
IF( ABS1( H( ILAST, ILAST-1 ) ).LE.MAX( SAFMIN, ULP*(
523-
$ ABS1( H( ILAST, ILAST ) ) + ABS1( H( ILAST-1, ILAST-1 )
524-
$ ) ) ) ) THEN
522+
IF( ABS1( H( ILAST, ILAST-1 ) ).LE.ATOL ) THEN
525523
H( ILAST, ILAST-1 ) = CZERO
526524
GO TO 60
527525
END IF
528526
END IF
529527
*
530-
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
531-
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
532-
$ ) ) ) ) THEN
528+
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
533529
T( ILAST, ILAST ) = CZERO
534530
GO TO 50
535531
END IF
@@ -543,9 +539,7 @@ SUBROUTINE ZHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
543539
IF( J.EQ.ILO ) THEN
544540
ILAZRO = .TRUE.
545541
ELSE
546-
IF( ABS1( H( J, J-1 ) ).LE.MAX( SAFMIN, ULP*(
547-
$ ABS1( H( J, J ) ) + ABS1( H( J-1, J-1 ) )
548-
$ ) ) ) THEN
542+
IF( ABS1( H( J, J-1 ) ).LE.ATOL ) THEN
549543
H( J, J-1 ) = CZERO
550544
ILAZRO = .TRUE.
551545
ELSE
@@ -555,10 +549,7 @@ SUBROUTINE ZHGEQZ( JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT,
555549
*
556550
* Test 2: for T(j,j)=0
557551
*
558-
TEMP = ABS ( T( J, J + 1 ) )
559-
IF ( J .GT. ILO )
560-
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
561-
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
552+
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
562553
T( J, J ) = CZERO
563554
*
564555
* Test 1a: Check for 2 consecutive small subdiagonals in A

0 commit comments

Comments
 (0)