Diff for /rpl/lapack/lapack/zsytf2.f between versions 1.7 and 1.8

version 1.7, 2010/12/21 13:53:56 version 1.8, 2011/07/22 07:38:20
Line 1 Line 1
       SUBROUTINE ZSYTF2( UPLO, N, A, LDA, IPIV, INFO )        SUBROUTINE ZSYTF2( UPLO, N, A, LDA, IPIV, INFO )
 *  *
 *  -- LAPACK routine (version 3.2) --  *  -- 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 2006  *  -- April 2011                                                      --
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       CHARACTER          UPLO        CHARACTER          UPLO
Line 20 Line 20
 *  ZSYTF2 computes the factorization of a complex symmetric matrix A  *  ZSYTF2 computes the factorization of a complex symmetric matrix A
 *  using the Bunch-Kaufman diagonal pivoting method:  *  using the Bunch-Kaufman diagonal pivoting method:
 *  *
 *     A = U*D*U'  or  A = L*D*L'  *     A = U*D*U**T  or  A = L*D*L**T
 *  *
 *  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, U' is the transpose of U, and D is symmetric and  *  triangular matrices, U**T is the transpose of U, and D is symmetric and
 *  block diagonal with 1-by-1 and 2-by-2 diagonal blocks.  *  block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
 *  *
 *  This is the unblocked version of the algorithm, calling Level 2 BLAS.  *  This is the unblocked version of the algorithm, calling Level 2 BLAS.
Line 87 Line 87
 *  1-96 - Based on modifications by J. Lewis, Boeing Computer Services  *  1-96 - Based on modifications by J. Lewis, Boeing Computer Services
 *         Company  *         Company
 *  *
 *  If UPLO = 'U', then A = U*D*U', where  *  If UPLO = 'U', then A = U*D*U**T, where
 *     U = P(n)*U(n)* ... *P(k)U(k)* ...,  *     U = P(n)*U(n)* ... *P(k)U(k)* ...,
 *  i.e., U is a product of terms P(k)*U(k), where k decreases from n to  *  i.e., U is a product of terms P(k)*U(k), where k decreases from n to
 *  1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1  *  1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
Line 104 Line 104
 *  If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k),  *  If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k),
 *  and A(k,k), and v overwrites A(1:k-2,k-1:k).  *  and A(k,k), and v overwrites A(1:k-2,k-1:k).
 *  *
 *  If UPLO = 'L', then A = L*D*L', where  *  If UPLO = 'L', then A = L*D*L**T, where
 *     L = P(1)*L(1)* ... *P(k)*L(k)* ...,  *     L = P(1)*L(1)* ... *P(k)*L(k)* ...,
 *  i.e., L is a product of terms P(k)*L(k), where k increases from 1 to  *  i.e., L is a product of terms P(k)*L(k), where k increases from 1 to
 *  n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1  *  n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
Line 178 Line 178
 *  *
       IF( UPPER ) THEN        IF( UPPER ) THEN
 *  *
 *        Factorize A as U*D*U' using the upper triangle of A  *        Factorize A as U*D*U**T using the upper triangle of A
 *  *
 *        K is the main loop index, decreasing from N to 1 in steps of  *        K is the main loop index, decreasing from N to 1 in steps of
 *        1 or 2  *        1 or 2
Line 209 Line 209
 *  *
          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 contains a NaN: set INFO and continue  *           Column K is zero or NaN: set INFO and continue
 *  *
             IF( INFO.EQ.0 )              IF( INFO.EQ.0 )
      $         INFO = K       $         INFO = K
Line 284 Line 284
 *  *
 *              Perform a rank-1 update of A(1:k-1,1:k-1) as  *              Perform a rank-1 update of A(1:k-1,1:k-1) as
 *  *
 *              A := A - U(k)*D(k)*U(k)' = A - W(k)*1/D(k)*W(k)'  *              A := A - U(k)*D(k)*U(k)**T = A - W(k)*1/D(k)*W(k)**T
 *  *
                R1 = CONE / A( K, K )                 R1 = CONE / A( K, K )
                CALL ZSYR( UPLO, K-1, -R1, A( 1, K ), 1, A, LDA )                 CALL ZSYR( UPLO, K-1, -R1, A( 1, K ), 1, A, LDA )
Line 303 Line 303
 *  *
 *              Perform a rank-2 update of A(1:k-2,1:k-2) as  *              Perform a rank-2 update of A(1:k-2,1:k-2) as
 *  *
 *              A := A - ( U(k-1) U(k) )*D(k)*( U(k-1) U(k) )'  *              A := A - ( U(k-1) U(k) )*D(k)*( U(k-1) U(k) )**T
 *                 = A - ( W(k-1) W(k) )*inv(D(k))*( W(k-1) W(k) )'  *                 = A - ( W(k-1) W(k) )*inv(D(k))*( W(k-1) W(k) )**T
 *  *
                IF( K.GT.2 ) THEN                 IF( K.GT.2 ) THEN
 *  *
Line 346 Line 346
 *  *
       ELSE        ELSE
 *  *
 *        Factorize A as L*D*L' using the lower triangle of A  *        Factorize A as L*D*L**T using the lower triangle of A
 *  *
 *        K is the main loop index, increasing from 1 to N in steps of  *        K is the main loop index, increasing from 1 to N in steps of
 *        1 or 2  *        1 or 2
Line 377 Line 377
 *  *
          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 contains a NaN: set INFO and continue  *           Column K is zero or NaN: set INFO and continue
 *  *
             IF( INFO.EQ.0 )              IF( INFO.EQ.0 )
      $         INFO = K       $         INFO = K
Line 455 Line 455
 *  *
 *                 Perform a rank-1 update of A(k+1:n,k+1:n) as  *                 Perform a rank-1 update of A(k+1:n,k+1:n) as
 *  *
 *                 A := A - L(k)*D(k)*L(k)' = A - W(k)*(1/D(k))*W(k)'  *                 A := A - L(k)*D(k)*L(k)**T = A - W(k)*(1/D(k))*W(k)**T
 *  *
                   R1 = CONE / A( K, K )                    R1 = CONE / A( K, K )
                   CALL ZSYR( UPLO, N-K, -R1, A( K+1, K ), 1,                    CALL ZSYR( UPLO, N-K, -R1, A( K+1, K ), 1,
Line 473 Line 473
 *  *
 *                 Perform a rank-2 update of A(k+2:n,k+2:n) as  *                 Perform a rank-2 update of A(k+2:n,k+2:n) as
 *  *
 *                 A := A - ( L(k) L(k+1) )*D(k)*( L(k) L(k+1) )'  *                 A := A - ( L(k) L(k+1) )*D(k)*( L(k) L(k+1) )**T
 *                    = A - ( W(k) W(k+1) )*inv(D(k))*( W(k) W(k+1) )'  *                    = A - ( W(k) W(k+1) )*inv(D(k))*( W(k) W(k+1) )**T
 *  *
 *                 where L(k) and L(k+1) are the k-th and (k+1)-th  *                 where L(k) and L(k+1) are the k-th and (k+1)-th
 *                 columns of L  *                 columns of L

Removed from v.1.7  
changed lines
  Added in v.1.8


CVSweb interface <joel.bertrand@systella.fr>