version 1.6, 2011/11/21 22:19:41
|
version 1.17, 2020/05/21 21:46:02
|
Line 2
|
Line 2
|
* |
* |
* =========== DOCUMENTATION =========== |
* =========== DOCUMENTATION =========== |
* |
* |
* Online html documentation available at |
* Online html documentation available at |
* http://www.netlib.org/lapack/explore-html/ |
* http://www.netlib.org/lapack/explore-html/ |
* |
* |
*> \htmlonly |
*> \htmlonly |
*> Download DSYSVXX + dependencies |
*> Download DSYSVXX + dependencies |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dsysvxx.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dsysvxx.f"> |
*> [TGZ]</a> |
*> [TGZ]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dsysvxx.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dsysvxx.f"> |
*> [ZIP]</a> |
*> [ZIP]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dsysvxx.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dsysvxx.f"> |
*> [TXT]</a> |
*> [TXT]</a> |
*> \endhtmlonly |
*> \endhtmlonly |
* |
* |
* Definition: |
* Definition: |
* =========== |
* =========== |
Line 22
|
Line 22
|
* EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, |
* EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, |
* N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, |
* N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, |
* NPARAMS, PARAMS, WORK, IWORK, INFO ) |
* NPARAMS, PARAMS, WORK, IWORK, INFO ) |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
* CHARACTER EQUED, FACT, UPLO |
* CHARACTER EQUED, FACT, UPLO |
* INTEGER INFO, LDA, LDAF, LDB, LDX, N, NRHS, NPARAMS, |
* INTEGER INFO, LDA, LDAF, LDB, LDX, N, NRHS, NPARAMS, |
Line 37
|
Line 37
|
* $ ERR_BNDS_NORM( NRHS, * ), |
* $ ERR_BNDS_NORM( NRHS, * ), |
* $ ERR_BNDS_COMP( NRHS, * ) |
* $ ERR_BNDS_COMP( NRHS, * ) |
* .. |
* .. |
* |
* |
* |
* |
*> \par Purpose: |
*> \par Purpose: |
* ============= |
* ============= |
Line 180
|
Line 180
|
*> |
*> |
*> \param[in,out] AF |
*> \param[in,out] AF |
*> \verbatim |
*> \verbatim |
*> AF is or output) DOUBLE PRECISION array, dimension (LDAF,N) |
*> AF is DOUBLE PRECISION array, dimension (LDAF,N) |
*> If FACT = 'F', then AF is an input argument and on entry |
*> If FACT = 'F', then AF is an input argument and on entry |
*> contains the block diagonal matrix D and the multipliers |
*> contains the block diagonal matrix D and the multipliers |
*> used to obtain the factor U or L from the factorization A = |
*> used to obtain the factor U or L from the factorization A = |
Line 200
|
Line 200
|
*> |
*> |
*> \param[in,out] IPIV |
*> \param[in,out] IPIV |
*> \verbatim |
*> \verbatim |
*> IPIV is or output) INTEGER array, dimension (N) |
*> IPIV is INTEGER array, dimension (N) |
*> If FACT = 'F', then IPIV is an input argument and on entry |
*> If FACT = 'F', then IPIV is an input argument and on entry |
*> contains details of the interchanges and the block |
*> contains details of the interchanges and the block |
*> structure of D, as determined by DSYTRF. If IPIV(k) > 0, |
*> structure of D, as determined by DSYTRF. If IPIV(k) > 0, |
Line 219
|
Line 219
|
*> |
*> |
*> \param[in,out] EQUED |
*> \param[in,out] EQUED |
*> \verbatim |
*> \verbatim |
*> EQUED is or output) CHARACTER*1 |
*> EQUED is CHARACTER*1 |
*> Specifies the form of equilibration that was done. |
*> Specifies the form of equilibration that was done. |
*> = 'N': No equilibration (always true if FACT = 'N'). |
*> = 'N': No equilibration (always true if FACT = 'N'). |
*> = 'Y': Both row and column equilibration, i.e., A has been |
*> = 'Y': Both row and column equilibration, i.e., A has been |
Line 230
|
Line 230
|
*> |
*> |
*> \param[in,out] S |
*> \param[in,out] S |
*> \verbatim |
*> \verbatim |
*> S is or output) DOUBLE PRECISION array, dimension (N) |
*> S is DOUBLE PRECISION array, dimension (N) |
*> The scale factors for A. If EQUED = 'Y', A is multiplied on |
*> The scale factors for A. If EQUED = 'Y', A is multiplied on |
*> the left and right by diag(S). S is an input argument if FACT = |
*> the left and right by diag(S). S is an input argument if FACT = |
*> 'F'; otherwise, S is an output argument. If FACT = 'F' and EQUED |
*> 'F'; otherwise, S is an output argument. If FACT = 'F' and EQUED |
Line 377
|
Line 377
|
*> information as described below. There currently are up to three |
*> information as described below. There currently are up to three |
*> pieces of information returned for each right-hand side. If |
*> pieces of information returned for each right-hand side. If |
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then |
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then |
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most |
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS < 3, then at most |
*> the first (:,N_ERR_BNDS) entries are returned. |
*> the first (:,N_ERR_BNDS) entries are returned. |
*> |
*> |
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith |
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith |
Line 413
|
Line 413
|
*> \param[in] NPARAMS |
*> \param[in] NPARAMS |
*> \verbatim |
*> \verbatim |
*> NPARAMS is INTEGER |
*> NPARAMS is INTEGER |
*> Specifies the number of parameters set in PARAMS. If .LE. 0, the |
*> Specifies the number of parameters set in PARAMS. If <= 0, the |
*> PARAMS array is never referenced and default values are used. |
*> PARAMS array is never referenced and default values are used. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in,out] PARAMS |
*> \param[in,out] PARAMS |
*> \verbatim |
*> \verbatim |
*> PARAMS is / output) DOUBLE PRECISION array, dimension (NPARAMS) |
*> PARAMS is DOUBLE PRECISION array, dimension (NPARAMS) |
*> Specifies algorithm parameters. If an entry is .LT. 0.0, then |
*> Specifies algorithm parameters. If an entry is < 0.0, then |
*> that entry will be filled with default value used for that |
*> that entry will be filled with default value used for that |
*> parameter. Only positions up to NPARAMS are accessed; defaults |
*> parameter. Only positions up to NPARAMS are accessed; defaults |
*> are used for higher-numbered parameters. |
*> are used for higher-numbered parameters. |
Line 428
|
Line 428
|
*> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative |
*> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative |
*> refinement or not. |
*> refinement or not. |
*> Default: 1.0D+0 |
*> Default: 1.0D+0 |
*> = 0.0 : No refinement is performed, and no error bounds are |
*> = 0.0: No refinement is performed, and no error bounds are |
*> computed. |
*> computed. |
*> = 1.0 : Use the extra-precise refinement algorithm. |
*> = 1.0: Use the extra-precise refinement algorithm. |
*> (other values are reserved for future use) |
*> (other values are reserved for future use) |
*> |
*> |
*> PARAMS(LA_LINRX_ITHRESH_I = 2) : Maximum number of residual |
*> PARAMS(LA_LINRX_ITHRESH_I = 2) : Maximum number of residual |
Line 490
|
Line 490
|
* Authors: |
* Authors: |
* ======== |
* ======== |
* |
* |
*> \author Univ. of Tennessee |
*> \author Univ. of Tennessee |
*> \author Univ. of California Berkeley |
*> \author Univ. of California Berkeley |
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date November 2011 |
*> \date December 2016 |
* |
* |
*> \ingroup doubleSYcomputational |
*> \ingroup doubleSYsolve |
* |
* |
* ===================================================================== |
* ===================================================================== |
SUBROUTINE DSYSVXX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, |
SUBROUTINE DSYSVXX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, |
Line 505
|
Line 505
|
$ N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, |
$ N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, |
$ NPARAMS, PARAMS, WORK, IWORK, INFO ) |
$ NPARAMS, PARAMS, WORK, IWORK, INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.4.0) -- |
* -- LAPACK driver routine (version 3.7.0) -- |
* -- 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 2011 |
* December 2016 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER EQUED, FACT, UPLO |
CHARACTER EQUED, FACT, UPLO |
Line 550
|
Line 550
|
DOUBLE PRECISION DLAMCH, DLA_SYRPVGRW |
DOUBLE PRECISION DLAMCH, DLA_SYRPVGRW |
* .. |
* .. |
* .. External Subroutines .. |
* .. External Subroutines .. |
EXTERNAL DSYCON, DSYEQUB, DSYTRF, DSYTRS, |
EXTERNAL DSYEQUB, DSYTRF, DSYTRS, |
$ DLACPY, DLAQSY, XERBLA, DLASCL2, DSYRFSX |
$ DLACPY, DLAQSY, XERBLA, DLASCL2, DSYRFSX |
* .. |
* .. |
* .. Intrinsic Functions .. |
* .. Intrinsic Functions .. |
Line 594
|
Line 594
|
INFO = -8 |
INFO = -8 |
ELSE IF( LSAME( FACT, 'F' ) .AND. .NOT. |
ELSE IF( LSAME( FACT, 'F' ) .AND. .NOT. |
$ ( RCEQU .OR. LSAME( EQUED, 'N' ) ) ) THEN |
$ ( RCEQU .OR. LSAME( EQUED, 'N' ) ) ) THEN |
INFO = -9 |
INFO = -10 |
ELSE |
ELSE |
IF ( RCEQU ) THEN |
IF ( RCEQU ) THEN |
SMIN = BIGNUM |
SMIN = BIGNUM |
Line 604
|
Line 604
|
SMAX = MAX( SMAX, S( J ) ) |
SMAX = MAX( SMAX, S( J ) ) |
10 CONTINUE |
10 CONTINUE |
IF( SMIN.LE.ZERO ) THEN |
IF( SMIN.LE.ZERO ) THEN |
INFO = -10 |
INFO = -11 |
ELSE IF( N.GT.0 ) THEN |
ELSE IF( N.GT.0 ) THEN |
SCOND = MAX( SMIN, SMLNUM ) / MIN( SMAX, BIGNUM ) |
SCOND = MAX( SMIN, SMLNUM ) / MIN( SMAX, BIGNUM ) |
ELSE |
ELSE |
Line 613
|
Line 613
|
END IF |
END IF |
IF( INFO.EQ.0 ) THEN |
IF( INFO.EQ.0 ) THEN |
IF( LDB.LT.MAX( 1, N ) ) THEN |
IF( LDB.LT.MAX( 1, N ) ) THEN |
INFO = -12 |
INFO = -13 |
ELSE IF( LDX.LT.MAX( 1, N ) ) THEN |
ELSE IF( LDX.LT.MAX( 1, N ) ) THEN |
INFO = -14 |
INFO = -15 |
END IF |
END IF |
END IF |
END IF |
END IF |
END IF |