version 1.10, 2011/11/21 22:19:57
|
version 1.18, 2017/06/17 11:07:02
|
Line 1
|
Line 1
|
*> \brief \b ZSYTF2 |
*> \brief \b ZSYTF2 computes the factorization of a real symmetric indefinite matrix, using the diagonal pivoting method (unblocked algorithm). |
* |
* |
* =========== 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 ZSYTF2 + dependencies |
*> Download ZSYTF2 + dependencies |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zsytf2.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zsytf2.f"> |
*> [TGZ]</a> |
*> [TGZ]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zsytf2.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zsytf2.f"> |
*> [ZIP]</a> |
*> [ZIP]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zsytf2.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zsytf2.f"> |
*> [TXT]</a> |
*> [TXT]</a> |
*> \endhtmlonly |
*> \endhtmlonly |
* |
* |
* Definition: |
* Definition: |
* =========== |
* =========== |
* |
* |
* SUBROUTINE ZSYTF2( UPLO, N, A, LDA, IPIV, INFO ) |
* SUBROUTINE ZSYTF2( UPLO, N, A, LDA, IPIV, INFO ) |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
* CHARACTER UPLO |
* CHARACTER UPLO |
* INTEGER INFO, LDA, N |
* INTEGER INFO, LDA, N |
Line 28
|
Line 28
|
* INTEGER IPIV( * ) |
* INTEGER IPIV( * ) |
* COMPLEX*16 A( LDA, * ) |
* COMPLEX*16 A( LDA, * ) |
* .. |
* .. |
* |
* |
* |
* |
*> \par Purpose: |
*> \par Purpose: |
* ============= |
* ============= |
Line 90
|
Line 90
|
*> \verbatim |
*> \verbatim |
*> IPIV is INTEGER array, dimension (N) |
*> IPIV is INTEGER array, dimension (N) |
*> Details of the interchanges and the block structure of D. |
*> Details of the interchanges and the block structure of D. |
*> If IPIV(k) > 0, then rows and columns k and IPIV(k) were |
*> |
*> interchanged and D(k,k) is a 1-by-1 diagonal block. |
*> If UPLO = 'U': |
*> If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and |
*> If IPIV(k) > 0, then rows and columns k and IPIV(k) were |
*> columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k) |
*> interchanged and D(k,k) is a 1-by-1 diagonal block. |
*> is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) = |
*> |
*> IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were |
*> If IPIV(k) = IPIV(k-1) < 0, then rows and columns |
*> interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block. |
*> k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k) |
|
*> is a 2-by-2 diagonal block. |
|
*> |
|
*> If UPLO = 'L': |
|
*> If IPIV(k) > 0, then rows and columns k and IPIV(k) were |
|
*> interchanged and D(k,k) is a 1-by-1 diagonal block. |
|
*> |
|
*> If IPIV(k) = IPIV(k+1) < 0, then rows and columns |
|
*> k+1 and -IPIV(k) were interchanged and D(k:k+1,k:k+1) |
|
*> is a 2-by-2 diagonal block. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[out] INFO |
*> \param[out] INFO |
Line 113
|
Line 122
|
* 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 complex16SYcomputational |
*> \ingroup complex16SYcomputational |
* |
* |
Line 182
|
Line 191
|
* ===================================================================== |
* ===================================================================== |
SUBROUTINE ZSYTF2( UPLO, N, A, LDA, IPIV, INFO ) |
SUBROUTINE ZSYTF2( UPLO, N, A, LDA, IPIV, INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.4.0) -- |
* -- LAPACK computational 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 UPLO |
CHARACTER UPLO |
Line 273
|
Line 282
|
ABSAKK = CABS1( A( K, K ) ) |
ABSAKK = CABS1( A( K, K ) ) |
* |
* |
* IMAX is the row-index of the largest off-diagonal element in |
* IMAX is the row-index of the largest off-diagonal element in |
* column K, and COLMAX is its absolute value |
* column K, and COLMAX is its absolute value. |
|
* Determine both COLMAX and IMAX. |
* |
* |
IF( K.GT.1 ) THEN |
IF( K.GT.1 ) THEN |
IMAX = IZAMAX( K-1, A( 1, K ), 1 ) |
IMAX = IZAMAX( K-1, A( 1, K ), 1 ) |
Line 284
|
Line 294
|
* |
* |
IF( MAX( ABSAKK, COLMAX ).EQ.ZERO .OR. DISNAN(ABSAKK) ) THEN |
IF( MAX( ABSAKK, COLMAX ).EQ.ZERO .OR. DISNAN(ABSAKK) ) THEN |
* |
* |
* Column K is zero or NaN: set INFO and continue |
* Column K is zero or underflow, or contains a NaN: |
|
* set INFO and continue |
* |
* |
IF( INFO.EQ.0 ) |
IF( INFO.EQ.0 ) |
$ INFO = K |
$ INFO = K |
Line 441
|
Line 452
|
ABSAKK = CABS1( A( K, K ) ) |
ABSAKK = CABS1( A( K, K ) ) |
* |
* |
* IMAX is the row-index of the largest off-diagonal element in |
* IMAX is the row-index of the largest off-diagonal element in |
* column K, and COLMAX is its absolute value |
* column K, and COLMAX is its absolute value. |
|
* Determine both COLMAX and IMAX. |
* |
* |
IF( K.LT.N ) THEN |
IF( K.LT.N ) THEN |
IMAX = K + IZAMAX( N-K, A( K+1, K ), 1 ) |
IMAX = K + IZAMAX( N-K, A( K+1, K ), 1 ) |
Line 452
|
Line 464
|
* |
* |
IF( MAX( ABSAKK, COLMAX ).EQ.ZERO .OR. DISNAN(ABSAKK) ) THEN |
IF( MAX( ABSAKK, COLMAX ).EQ.ZERO .OR. DISNAN(ABSAKK) ) THEN |
* |
* |
* Column K is zero or NaN: set INFO and continue |
* Column K is zero or underflow, or contains a NaN: |
|
* set INFO and continue |
* |
* |
IF( INFO.EQ.0 ) |
IF( INFO.EQ.0 ) |
$ INFO = K |
$ INFO = K |