version 1.3, 2018/05/29 06:55:21
|
version 1.5, 2020/05/21 21:46:02
|
Line 42
|
Line 42
|
*> matrices. |
*> matrices. |
*> |
*> |
*> Aasen's algorithm is used to factor A as |
*> Aasen's algorithm is used to factor A as |
*> A = U * T * U**T, if UPLO = 'U', or |
*> A = U**T * T * U, if UPLO = 'U', or |
*> A = L * T * L**T, 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 tridiagonal. The factored |
*> triangular matrices, and T is symmetric tridiagonal. The factored |
Line 86
|
Line 86
|
*> |
*> |
*> On exit, if INFO = 0, the tridiagonal matrix T and the |
*> On exit, if INFO = 0, the tridiagonal matrix T and the |
*> multipliers used to obtain the factor U or L from the |
*> multipliers used to obtain the factor U or L from the |
*> factorization A = U*T*U**T or A = L*T*L**T as computed by |
*> factorization A = U**T*T*U or A = L*T*L**T as computed by |
*> DSYTRF. |
*> DSYTRF. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
Line 221
|
Line 221
|
LWKOPT_SYTRS = INT( WORK(1) ) |
LWKOPT_SYTRS = INT( WORK(1) ) |
LWKOPT = MAX( LWKOPT_SYTRF, LWKOPT_SYTRS ) |
LWKOPT = MAX( LWKOPT_SYTRF, LWKOPT_SYTRS ) |
WORK( 1 ) = LWKOPT |
WORK( 1 ) = LWKOPT |
IF( LWORK.LT.LWKOPT .AND. .NOT.LQUERY ) THEN |
|
INFO = -10 |
|
END IF |
|
END IF |
END IF |
* |
* |
IF( INFO.NE.0 ) THEN |
IF( INFO.NE.0 ) THEN |
Line 233
|
Line 230
|
RETURN |
RETURN |
END IF |
END IF |
* |
* |
* Compute the factorization A = U*T*U**T or A = L*T*L**T. |
* Compute the factorization A = U**T*T*U or A = L*T*L**T. |
* |
* |
CALL DSYTRF_AA( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) |
CALL DSYTRF_AA( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) |
IF( INFO.EQ.0 ) THEN |
IF( INFO.EQ.0 ) THEN |