version 1.3, 2018/05/29 07:18:25
|
version 1.5, 2023/08/07 08:39:29
|
Line 239
|
Line 239
|
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date December 2016 |
|
* |
|
*> \ingroup complex16HEcomputational |
*> \ingroup complex16HEcomputational |
* |
* |
*> \par Contributors: |
*> \par Contributors: |
Line 262
|
Line 260
|
SUBROUTINE ZLAHEF_RK( UPLO, N, NB, KB, A, LDA, E, IPIV, W, LDW, |
SUBROUTINE ZLAHEF_RK( UPLO, N, NB, KB, A, LDA, E, IPIV, W, LDW, |
$ INFO ) |
$ INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.7.0) -- |
* -- LAPACK computational routine -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* December 2016 |
|
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER UPLO |
CHARACTER UPLO |
Line 331
|
Line 328
|
* Factorize the trailing columns of A using the upper triangle |
* Factorize the trailing columns of A using the upper triangle |
* of A and working backwards, and compute the matrix W = U12*D |
* of A and working backwards, and compute the matrix W = U12*D |
* for use in updating A11 (note that conjg(W) is actually stored) |
* for use in updating A11 (note that conjg(W) is actually stored) |
* Initilize the first entry of array E, where superdiagonal |
* Initialize the first entry of array E, where superdiagonal |
* elements of D are stored |
* elements of D are stored |
* |
* |
E( 1 ) = CZERO |
E( 1 ) = CZERO |
Line 463
|
Line 460
|
* |
* |
* Case(2) |
* Case(2) |
* Equivalent to testing for |
* Equivalent to testing for |
* ABS( REAL( W( IMAX,KW-1 ) ) ).GE.ALPHA*ROWMAX |
* ABS( DBLE( W( IMAX,KW-1 ) ) ).GE.ALPHA*ROWMAX |
* (used to handle NaN and Inf) |
* (used to handle NaN and Inf) |
* |
* |
IF( .NOT.( ABS( DBLE( W( IMAX,KW-1 ) ) ) |
IF( .NOT.( ABS( DBLE( W( IMAX,KW-1 ) ) ) |
Line 602
|
Line 599
|
* A(1:k-1,k) := U(1:k-1,k) = W(1:k-1,kw)/D(k,k) |
* A(1:k-1,k) := U(1:k-1,k) = W(1:k-1,kw)/D(k,k) |
* |
* |
* (NOTE: No need to use for Hermitian matrix |
* (NOTE: No need to use for Hermitian matrix |
* A( K, K ) = REAL( W( K, K) ) to separately copy diagonal |
* A( K, K ) = DBLE( W( K, K) ) to separately copy diagonal |
* element D(k,k) from W (potentially saves only one load)) |
* element D(k,k) from W (potentially saves only one load)) |
CALL ZCOPY( K, W( 1, KW ), 1, A( 1, K ), 1 ) |
CALL ZCOPY( K, W( 1, KW ), 1, A( 1, K ), 1 ) |
IF( K.GT.1 ) THEN |
IF( K.GT.1 ) THEN |
Line 789
|
Line 786
|
* of A and working forwards, and compute the matrix W = L21*D |
* of A and working forwards, and compute the matrix W = L21*D |
* for use in updating A22 (note that conjg(W) is actually stored) |
* for use in updating A22 (note that conjg(W) is actually stored) |
* |
* |
* Initilize the unused last entry of the subdiagonal array E. |
* Initialize the unused last entry of the subdiagonal array E. |
* |
* |
E( N ) = CZERO |
E( N ) = CZERO |
* |
* |
Line 915
|
Line 912
|
* |
* |
* Case(2) |
* Case(2) |
* Equivalent to testing for |
* Equivalent to testing for |
* ABS( REAL( W( IMAX,K+1 ) ) ).GE.ALPHA*ROWMAX |
* ABS( DBLE( W( IMAX,K+1 ) ) ).GE.ALPHA*ROWMAX |
* (used to handle NaN and Inf) |
* (used to handle NaN and Inf) |
* |
* |
IF( .NOT.( ABS( DBLE( W( IMAX,K+1 ) ) ) |
IF( .NOT.( ABS( DBLE( W( IMAX,K+1 ) ) ) |
Line 1045
|
Line 1042
|
* A(k+1:N,k) := L(k+1:N,k) = W(k+1:N,k)/D(k,k) |
* A(k+1:N,k) := L(k+1:N,k) = W(k+1:N,k)/D(k,k) |
* |
* |
* (NOTE: No need to use for Hermitian matrix |
* (NOTE: No need to use for Hermitian matrix |
* A( K, K ) = REAL( W( K, K) ) to separately copy diagonal |
* A( K, K ) = DBLE( W( K, K) ) to separately copy diagonal |
* element D(k,k) from W (potentially saves only one load)) |
* element D(k,k) from W (potentially saves only one load)) |
CALL ZCOPY( N-K+1, W( K, K ), 1, A( K, K ), 1 ) |
CALL ZCOPY( N-K+1, W( K, K ), 1, A( K, K ), 1 ) |
IF( K.LT.N ) THEN |
IF( K.LT.N ) THEN |