version 1.5, 2010/08/07 13:22:33
|
version 1.9, 2011/07/22 07:38:15
|
Line 1
|
Line 1
|
SUBROUTINE ZHESV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, |
SUBROUTINE ZHESV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, |
$ LWORK, INFO ) |
$ LWORK, INFO ) |
* |
* |
* -- LAPACK driver routine (version 3.2) -- |
* -- LAPACK driver routine (version 3.3.1) -- |
* -- 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..-- |
* November 2006 |
* -- April 2011 -- |
|
* @precisions normal z -> c |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER UPLO |
CHARACTER UPLO |
Line 88
|
Line 89
|
* The length of WORK. LWORK >= 1, and for best performance |
* The length of WORK. LWORK >= 1, and for best performance |
* LWORK >= max(1,N*NB), where NB is the optimal blocksize for |
* LWORK >= max(1,N*NB), where NB is the optimal blocksize for |
* ZHETRF. |
* ZHETRF. |
|
* for LWORK < N, TRS will be done with Level BLAS 2 |
|
* for LWORK >= N, TRS will be done with Level BLAS 3 |
* |
* |
* If LWORK = -1, then a workspace query is assumed; the routine |
* If LWORK = -1, then a workspace query is assumed; the routine |
* only calculates the optimal size of the WORK array, returns |
* only calculates the optimal size of the WORK array, returns |
Line 113
|
Line 116
|
EXTERNAL LSAME, ILAENV |
EXTERNAL LSAME, ILAENV |
* .. |
* .. |
* .. External Subroutines .. |
* .. External Subroutines .. |
EXTERNAL XERBLA, ZHETRF, ZHETRS |
EXTERNAL XERBLA, ZHETRF, ZHETRS, ZHETRS2 |
* .. |
* .. |
* .. Intrinsic Functions .. |
* .. Intrinsic Functions .. |
INTRINSIC MAX |
INTRINSIC MAX |
Line 155
|
Line 158
|
RETURN |
RETURN |
END IF |
END IF |
* |
* |
* Compute the factorization A = U*D*U' or A = L*D*L'. |
* Compute the factorization A = U*D*U**H or A = L*D*L**H. |
* |
* |
CALL ZHETRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) |
CALL ZHETRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) |
IF( INFO.EQ.0 ) THEN |
IF( INFO.EQ.0 ) THEN |
* |
* |
* Solve the system A*X = B, overwriting B with X. |
* Solve the system A*X = B, overwriting B with X. |
* |
* |
CALL ZHETRS( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) |
IF ( LWORK.LT.N ) THEN |
|
* |
|
* Solve with TRS ( Use Level BLAS 2) |
|
* |
|
CALL ZHETRS( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) |
|
* |
|
ELSE |
|
* |
|
* Solve with TRS2 ( Use Level BLAS 3) |
|
* |
|
CALL ZHETRS2( UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO ) |
|
* |
|
END IF |
* |
* |
END IF |
END IF |
* |
* |