1! { dg-do compile } 2! { dg-options "-O3 -ffast-math" } 3 4 SUBROUTINE ZUNG2L( M, N, K, A, LDA, TAU, WORK, INFO ) 5 COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) 6 IF( M.LT.0 ) THEN 7 END IF 8 CALL ZLARF( 'LEFT', M-N+II, II-1, A( 1, II ), 1, TAU( I ), A, 9 $ LDA, WORK ) 10 CALL ZSCAL( M-N+II-1, -TAU( I ), A( 1, II ), 1 ) 11 A( M-N+II, II ) = ONE - TAU( I ) 12 END 13 SUBROUTINE ZLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK ) 14 CHARACTER SIDE(*) 15 LOGICAL LSAME 16 COMPLEX*16 C( LDC, * ), V(*), WORK(*), TAU 17 IF( LSAME( SIDE, 'L' ) ) THEN 18 IF( TAU.NE.ZERO ) THEN 19 CALL ZGEMV( 'CONJUGATE TRANSPOSE', M, N, ONE, C, LDC, V, 20 $ INCV, ZERO, WORK, 1 ) 21 END IF 22 END IF 23 END 24 LOGICAL FUNCTION LSAME( CA, CB ) 25 CHARACTER CA(*), CB(*) 26 END 27 SUBROUTINE ZGEMV ( TRANS, M, N, ALPHA, A, LDA, X, INCX, 28 $ BETA, Y, INCY ) 29 COMPLEX*16 A( LDA, * ), X( * ), Y( * ) 30 CHARACTER TRANS(*) 31 LOGICAL LSAME 32 IF( LSAME( TRANS, 'N' ) )THEN 33 IF( INCY.EQ.1 )THEN 34 IF( X( JX ).NE.ZERO )THEN 35 Y( I ) = Y( I ) + TEMP*A( I, J ) 36 END IF 37 END IF 38 END IF 39 END 40 SUBROUTINE ZSCAL(N,ZA,ZX,INCX) 41 COMPLEX*16 ZA,ZX(1) 42 IF( N.LE.0 .OR. INCX.LE.0 )RETURN 43 20 DO 30 I = 1,N 44 ZX(I) = ZA*ZX(I) 45 30 CONTINUE 46 END 47