1* 2* Derived from LAPACK 3.0 routine CHGEQZ 3* Fails on i686-pc-cygwin with gcc-2.97 snapshots at -O2 and higher 4* PR fortran/1645 5* 6* David Billinghurst, (David.Billinghurst@riotinto.com) 7* 14 January 2001 8* Rewritten by Toon Moene (toon@moene.indiv.nluug.nl) 9* 15 January 2001 10* 11 COMPLEX A(5,5) 12 DATA A/25*(0.0,0.0)/ 13 A(4,3) = (0.05,0.2)/3.0E-7 14 A(4,4) = (-0.03,-0.4) 15 A(5,4) = (-2.0E-07,2.0E-07) 16 CALL CHGEQZ( 5, A ) 17 END 18 SUBROUTINE CHGEQZ( N, A ) 19 COMPLEX A(N,N), X 20 ABS1( X ) = ABS( REAL( X ) ) + ABS( AIMAG( X ) ) 21 DO J = 4, 2, -1 22 I = J 23 TEMP = ABS1( A(J,J) ) 24 TEMP2 = ABS1( A( J+1, J ) ) 25 TEMPR = MAX( TEMP, TEMP2 ) 26 IF( TEMPR .LT. 1.0 .AND. TEMPR .NE. 0.0 ) THEN 27 TEMP = TEMP / TEMPR 28 TEMP2 = TEMP2 / TEMPR 29 END IF 30 IF ( ABS1(A(J,J-1))*TEMP2 .LE. TEMP ) GO TO 90 31 END DO 32c Should not reach here, but need a statement 33 PRINT* 34 90 IF ( I .NE. 4 ) THEN 35 PRINT*,'I =', I, ' but should be 4' 36 CALL ABORT() 37 END IF 38 END 39