version 1.2, 2010/12/21 13:53:39
|
version 1.3, 2011/07/22 07:38:12
|
Line 1
|
Line 1
|
SUBROUTINE DSYTRI2( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) |
SUBROUTINE DSYTRI2( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) |
* |
* |
* -- LAPACK routine (version 3.3.0) -- |
* -- LAPACK 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 2010 |
* -- April 2011 -- |
* |
* |
* -- Written by Julie Langou of the Univ. of TN -- |
* -- Written by Julie Langou of the Univ. of TN -- |
* |
* |
|
* @generated d |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER UPLO |
CHARACTER UPLO |
INTEGER INFO, LDA, LWORK, N |
INTEGER INFO, LDA, LWORK, N |
Line 19
|
Line 20
|
* Purpose |
* Purpose |
* ======= |
* ======= |
* |
* |
* DSYTRI2 computes the inverse of a real symmetric indefinite matrix |
* DSYTRI2 computes the inverse of a DOUBLE PRECISION hermitian indefinite matrix |
* A using the factorization A = U*D*U**T or A = L*D*L**T computed by |
* A using the factorization A = U*D*U**T or A = L*D*L**T computed by |
* DSYTRF. DSYTRI2 sets the LEADING DIMENSION of the workspace |
* DSYTRF. DSYTRI2 sets the LEADING DIMENSION of the workspace |
* before calling DSYTRI2X that actually computes the inverse. |
* before calling DSYTRI2X that actually computes the inverse. |
Line 94
|
Line 95
|
LQUERY = ( LWORK.EQ.-1 ) |
LQUERY = ( LWORK.EQ.-1 ) |
* Get blocksize |
* Get blocksize |
NBMAX = ILAENV( 1, 'DSYTRF', UPLO, N, -1, -1, -1 ) |
NBMAX = ILAENV( 1, 'DSYTRF', UPLO, N, -1, -1, -1 ) |
MINSIZE = (N+NBMAX+1)*(NBMAX+3) |
IF ( NBMAX .GE. N ) THEN |
|
MINSIZE = N |
|
ELSE |
|
MINSIZE = (N+NBMAX+1)*(NBMAX+3) |
|
END IF |
* |
* |
IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN |
IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN |
INFO = -1 |
INFO = -1 |
Line 113
|
Line 118
|
CALL XERBLA( 'DSYTRI2', -INFO ) |
CALL XERBLA( 'DSYTRI2', -INFO ) |
RETURN |
RETURN |
ELSE IF( LQUERY ) THEN |
ELSE IF( LQUERY ) THEN |
WORK(1)=(N+NBMAX+1)*(NBMAX+3) |
WORK(1)=MINSIZE |
RETURN |
RETURN |
END IF |
END IF |
IF( N.EQ.0 ) |
IF( N.EQ.0 ) |
$ RETURN |
$ RETURN |
|
|
CALL DSYTRI2X( UPLO, N, A, LDA, IPIV, WORK, NBMAX, INFO ) |
IF( NBMAX .GE. N ) THEN |
|
CALL DSYTRI( UPLO, N, A, LDA, IPIV, WORK, INFO ) |
|
ELSE |
|
CALL DSYTRI2X( UPLO, N, A, LDA, IPIV, WORK, NBMAX, INFO ) |
|
END IF |
RETURN |
RETURN |
* |
* |
* End of DSYTRI2 |
* End of DSYTRI2 |