--- rpl/lapack/lapack/dsytri2.f 2010/12/21 13:53:39 1.2 +++ rpl/lapack/lapack/dsytri2.f 2011/07/22 07:38:12 1.3 @@ -1,12 +1,13 @@ 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, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2010 +* -- April 2011 -- * * -- Written by Julie Langou of the Univ. of TN -- * +* @generated d * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, LWORK, N @@ -19,7 +20,7 @@ * 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 * DSYTRF. DSYTRI2 sets the LEADING DIMENSION of the workspace * before calling DSYTRI2X that actually computes the inverse. @@ -94,7 +95,11 @@ LQUERY = ( LWORK.EQ.-1 ) * Get blocksize 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 INFO = -1 @@ -113,13 +118,17 @@ CALL XERBLA( 'DSYTRI2', -INFO ) RETURN ELSE IF( LQUERY ) THEN - WORK(1)=(N+NBMAX+1)*(NBMAX+3) + WORK(1)=MINSIZE RETURN END IF IF( N.EQ.0 ) $ 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 * * End of DSYTRI2