@@ -200,7 +200,7 @@ SUBROUTINE CLAHEF( UPLO, N, NB, KB, A, LDA, IPIV, W, LDW,
200200 PARAMETER ( EIGHT = 8.0E+0 , SEVTEN = 17.0E+0 )
201201* ..
202202* .. Local Scalars ..
203- INTEGER IMAX, J, JB, JJ, JMAX, JP, K, KK, KKW, KP,
203+ INTEGER IMAX, J, JJ, JMAX, JP, K, KK, KKW, KP,
204204 $ KSTEP, KW
205205 REAL ABSAKK, ALPHA, COLMAX, R1, ROWMAX, T
206206 COMPLEX D11, D21, D22, Z
@@ -211,7 +211,7 @@ SUBROUTINE CLAHEF( UPLO, N, NB, KB, A, LDA, IPIV, W, LDW,
211211 EXTERNAL LSAME, ICAMAX
212212* ..
213213* .. External Subroutines ..
214- EXTERNAL CCOPY, CGEMM , CGEMV, CLACGV, CSSCAL,
214+ EXTERNAL CCOPY, CGEMMTR , CGEMV, CLACGV, CSSCAL,
215215 $ CSWAP
216216* ..
217217* .. Intrinsic Functions ..
@@ -552,28 +552,11 @@ SUBROUTINE CLAHEF( UPLO, N, NB, KB, A, LDA, IPIV, W, LDW,
552552*
553553* A11 := A11 - U12*D*U12**H = A11 - U12*W**H
554554*
555- * computing blocks of NB columns at a time (note that conjg(W) is
556- * actually stored)
555+ * (note that conjg(W) is actually stored)
557556*
558- DO 50 J = ( ( K-1 ) / NB )* NB + 1 , 1 , - NB
559- JB = MIN ( NB, K- J+1 )
560- *
561- * Update the upper triangle of the diagonal block
562- *
563- DO 40 JJ = J, J + JB - 1
564- A( JJ, JJ ) = REAL ( A( JJ, JJ ) )
565- CALL CGEMV( ' No transpose' , JJ- J+1 , N- K, - CONE,
566- $ A( J, K+1 ), LDA, W( JJ, KW+1 ), LDW, CONE,
567- $ A( J, JJ ), 1 )
568- A( JJ, JJ ) = REAL ( A( JJ, JJ ) )
569- 40 CONTINUE
570- *
571- * Update the rectangular superdiagonal block
572- *
573- CALL CGEMM( ' No transpose' , ' Transpose' , J-1 , JB, N- K,
574- $ - CONE, A( 1 , K+1 ), LDA, W( J, KW+1 ), LDW,
575- $ CONE, A( 1 , J ), LDA )
576- 50 CONTINUE
557+ CALL CGEMMTR( ' Upper' , ' No transpose' , ' Transpose' , K, N- K,
558+ $ - CONE, A( 1 , K+1 ), LDA, W( 1 , KW+1 ), LDW,
559+ $ CONE, A( 1 , 1 ), LDA )
577560*
578561* Put U12 in standard form by partially undoing the interchanges
579562* in of rows in columns k+1:n looping backwards from k+1 to n
@@ -916,29 +899,11 @@ SUBROUTINE CLAHEF( UPLO, N, NB, KB, A, LDA, IPIV, W, LDW,
916899*
917900* A22 := A22 - L21*D*L21**H = A22 - L21*W**H
918901*
919- * computing blocks of NB columns at a time (note that conjg(W) is
920- * actually stored)
921- *
922- DO 110 J = K, N, NB
923- JB = MIN ( NB, N- J+1 )
924- *
925- * Update the lower triangle of the diagonal block
926- *
927- DO 100 JJ = J, J + JB - 1
928- A( JJ, JJ ) = REAL ( A( JJ, JJ ) )
929- CALL CGEMV( ' No transpose' , J+ JB- JJ, K-1 , - CONE,
930- $ A( JJ, 1 ), LDA, W( JJ, 1 ), LDW, CONE,
931- $ A( JJ, JJ ), 1 )
932- A( JJ, JJ ) = REAL ( A( JJ, JJ ) )
933- 100 CONTINUE
934- *
935- * Update the rectangular subdiagonal block
902+ * (note that conjg(W) is actually stored)
936903*
937- IF ( J+ JB.LE. N )
938- $ CALL CGEMM( ' No transpose' , ' Transpose' , N- J- JB+1 , JB,
939- $ K-1 , - CONE, A( J+ JB, 1 ), LDA, W( J, 1 ),
940- $ LDW, CONE, A( J+ JB, J ), LDA )
941- 110 CONTINUE
904+ CALL CGEMMTR( ' Lower' , ' No transpose' , ' Transpose' , N- K+1 ,
905+ $ K-1 , - CONE, A( K, 1 ), LDA, W( K, 1 ), LDW,
906+ $ CONE, A( K, K ), LDA )
942907*
943908* Put L21 in standard form by partially undoing the interchanges
944909* of rows in columns 1:k-1 looping backwards from k-1 to 1
0 commit comments