version 1.1, 2018/05/29 14:57:21
|
version 1.3, 2023/08/07 08:39:38
|
Line 7
|
Line 7
|
* |
* |
*> \htmlonly |
*> \htmlonly |
*> Download ZSYSV_AA_2STAGE + dependencies |
*> Download ZSYSV_AA_2STAGE + dependencies |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zsysv_aasen_2stage.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zsysv_aa_2stage.f"> |
*> [TGZ]</a> |
*> [TGZ]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zsysv_aasen_2stage.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zsysv_aa_2stage.f"> |
*> [ZIP]</a> |
*> [ZIP]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zsysv_aasen_2stage.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zsysv_aa_2stage.f"> |
*> [TXT]</a> |
*> [TXT]</a> |
*> \endhtmlonly |
*> \endhtmlonly |
* |
* |
Line 43
|
Line 43
|
*> matrices. |
*> matrices. |
*> |
*> |
*> Aasen's 2-stage algorithm is used to factor A as |
*> Aasen's 2-stage algorithm is used to factor A as |
*> A = U * T * U**H, if UPLO = 'U', or |
*> A = U**T * T * U, if UPLO = 'U', or |
*> A = L * T * L**H, if UPLO = 'L', |
*> A = L * T * L**T, if UPLO = 'L', |
*> where U (or L) is a product of permutation and unit upper (lower) |
*> where U (or L) is a product of permutation and unit upper (lower) |
*> triangular matrices, and T is symmetric and band. The matrix T is |
*> triangular matrices, and T is symmetric and band. The matrix T is |
*> then LU-factored with partial pivoting. The factored form of A |
*> then LU-factored with partial pivoting. The factored form of A |
Line 105
|
Line 105
|
*> |
*> |
*> \param[in] LTB |
*> \param[in] LTB |
*> \verbatim |
*> \verbatim |
|
*> LTB is INTEGER |
*> The size of the array TB. LTB >= 4*N, internally |
*> The size of the array TB. LTB >= 4*N, internally |
*> used to select NB such that LTB >= (3*NB+1)*N. |
*> used to select NB such that LTB >= (3*NB+1)*N. |
*> |
*> |
Line 124
|
Line 125
|
*> |
*> |
*> \param[out] IPIV2 |
*> \param[out] IPIV2 |
*> \verbatim |
*> \verbatim |
*> IPIV is INTEGER array, dimension (N) |
*> IPIV2 is INTEGER array, dimension (N) |
*> On exit, it contains the details of the interchanges, i.e., |
*> On exit, it contains the details of the interchanges, i.e., |
*> the row and column k of T were interchanged with the |
*> the row and column k of T were interchanged with the |
*> row and column IPIV(k). |
*> row and column IPIV(k). |
Line 150
|
Line 151
|
*> |
*> |
*> \param[in] LWORK |
*> \param[in] LWORK |
*> \verbatim |
*> \verbatim |
|
*> LWORK is INTEGER |
*> The size of WORK. LWORK >= N, internally used to select NB |
*> The size of WORK. LWORK >= N, internally used to select NB |
*> such that LWORK >= N*NB. |
*> such that LWORK >= N*NB. |
*> |
*> |
Line 175
|
Line 177
|
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date November 2017 |
|
* |
|
*> \ingroup complex16SYcomputational |
*> \ingroup complex16SYcomputational |
* |
* |
* ===================================================================== |
* ===================================================================== |
Line 184
|
Line 184
|
$ IPIV, IPIV2, B, LDB, WORK, LWORK, |
$ IPIV, IPIV2, B, LDB, WORK, LWORK, |
$ INFO ) |
$ INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.8.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..-- |
* November 2017 |
|
* |
* |
IMPLICIT NONE |
IMPLICIT NONE |
* |
* |
Line 233
|
Line 232
|
INFO = -3 |
INFO = -3 |
ELSE IF( LDA.LT.MAX( 1, N ) ) THEN |
ELSE IF( LDA.LT.MAX( 1, N ) ) THEN |
INFO = -5 |
INFO = -5 |
|
ELSE IF( LTB.LT.( 4*N ) .AND. .NOT.TQUERY ) THEN |
|
INFO = -7 |
ELSE IF( LDB.LT.MAX( 1, N ) ) THEN |
ELSE IF( LDB.LT.MAX( 1, N ) ) THEN |
INFO = -11 |
INFO = -11 |
|
ELSE IF( LWORK.LT.N .AND. .NOT.WQUERY ) THEN |
|
INFO = -13 |
END IF |
END IF |
* |
* |
IF( INFO.EQ.0 ) THEN |
IF( INFO.EQ.0 ) THEN |
CALL ZSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, -1, IPIV, |
CALL ZSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, -1, IPIV, |
$ IPIV2, WORK, -1, INFO ) |
$ IPIV2, WORK, -1, INFO ) |
LWKOPT = INT( WORK(1) ) |
LWKOPT = INT( WORK(1) ) |
IF( LTB.LT.INT( TB(1) ) .AND. .NOT.TQUERY ) THEN |
|
INFO = -7 |
|
ELSE IF( LWORK.LT.LWKOPT .AND. .NOT.WQUERY ) THEN |
|
INFO = -13 |
|
END IF |
|
END IF |
END IF |
* |
* |
IF( INFO.NE.0 ) THEN |
IF( INFO.NE.0 ) THEN |
Line 256
|
Line 254
|
END IF |
END IF |
* |
* |
* |
* |
* Compute the factorization A = U*T*U**H or A = L*T*L**H. |
* Compute the factorization A = U**T*T*U or A = L*T*L**T. |
* |
* |
CALL ZSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV, IPIV2, |
CALL ZSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV, IPIV2, |
$ WORK, LWORK, INFO ) |
$ WORK, LWORK, INFO ) |