Diff for /rpl/lapack/lapack/zhetrs_aa_2stage.f between versions 1.1 and 1.2

version 1.1, 2018/05/29 14:56:49 version 1.2, 2020/05/21 21:46:06
Line 38 Line 38
 *> \verbatim  *> \verbatim
 *>  *>
 *> ZHETRS_AA_2STAGE solves a system of linear equations A*X = B with a   *> ZHETRS_AA_2STAGE solves a system of linear equations A*X = B with a 
 *> hermitian matrix A using the factorization A = U*T*U**T or  *> hermitian matrix A using the factorization A = U**H*T*U or
 *> A = L*T*L**T computed by ZHETRF_AA_2STAGE.  *> A = L*T*L**H computed by ZHETRF_AA_2STAGE.
 *> \endverbatim  *> \endverbatim
 *  *
 *  Arguments:  *  Arguments:
Line 50 Line 50
 *>          UPLO is CHARACTER*1  *>          UPLO is CHARACTER*1
 *>          Specifies whether the details of the factorization are stored  *>          Specifies whether the details of the factorization are stored
 *>          as an upper or lower triangular matrix.  *>          as an upper or lower triangular matrix.
 *>          = 'U':  Upper triangular, form is A = U*T*U**T;  *>          = 'U':  Upper triangular, form is A = U**H*T*U;
 *>          = 'L':  Lower triangular, form is A = L*T*L**T.  *>          = 'L':  Lower triangular, form is A = L*T*L**H.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] N  *> \param[in] N
Line 69 Line 69
 *>  *>
 *> \param[in] A  *> \param[in] A
 *> \verbatim  *> \verbatim
 *>          A is COMPLEX*16array, dimension (LDA,N)  *>          A is COMPLEX*16 array, dimension (LDA,N)
 *>          Details of factors computed by ZHETRF_AA_2STAGE.  *>          Details of factors computed by ZHETRF_AA_2STAGE.
 *> \endverbatim  *> \endverbatim
 *>  *>
Line 81 Line 81
 *>  *>
 *> \param[out] TB  *> \param[out] TB
 *> \verbatim  *> \verbatim
 *>          TB is COMPLEX*16array, dimension (LTB)  *>          TB is COMPLEX*16 array, dimension (LTB)
 *>          Details of factors computed by ZHETRF_AA_2STAGE.  *>          Details of factors computed by ZHETRF_AA_2STAGE.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] LTB  *> \param[in] LTB
 *> \verbatim  *> \verbatim
   *>          LTB is INTEGER
 *>          The size of the array TB. LTB >= 4*N.  *>          The size of the array TB. LTB >= 4*N.
 *> \endverbatim  *> \endverbatim
 *>  *>
Line 106 Line 107
 *>  *>
 *> \param[in,out] B  *> \param[in,out] B
 *> \verbatim  *> \verbatim
 *>          B is COMPLEX*16array, dimension (LDB,NRHS)  *>          B is COMPLEX*16 array, dimension (LDB,NRHS)
 *>          On entry, the right hand side matrix B.  *>          On entry, the right hand side matrix B.
 *>          On exit, the solution matrix X.  *>          On exit, the solution matrix X.
 *> \endverbatim  *> \endverbatim
Line 209 Line 210
 *  *
       IF( UPPER ) THEN        IF( UPPER ) THEN
 *  *
 *        Solve A*X = B, where A = U*T*U**T.  *        Solve A*X = B, where A = U**H*T*U.
 *  *
          IF( N.GT.NB ) THEN           IF( N.GT.NB ) THEN
 *  *
 *           Pivot, P**T * B  *           Pivot, P**T * B -> B
 *  *
             CALL ZLASWP( NRHS, B, LDB, NB+1, N, IPIV, 1 )              CALL ZLASWP( NRHS, B, LDB, NB+1, N, IPIV, 1 )
 *  *
 *           Compute (U**T \P**T * B) -> B    [ (U**T \P**T * B) ]  *           Compute (U**H \ B) -> B    [ (U**H \P**T * B) ]
 *  *
             CALL ZTRSM( 'L', 'U', 'C', 'U', N-NB, NRHS, ONE, A(1, NB+1),              CALL ZTRSM( 'L', 'U', 'C', 'U', N-NB, NRHS, ONE, A(1, NB+1),
      $                 LDA, B(NB+1, 1), LDB)       $                 LDA, B(NB+1, 1), LDB)
 *  *
          END IF           END IF
 *  *
 *        Compute T \ B -> B   [ T \ (U**T \P**T * B) ]  *        Compute T \ B -> B   [ T \ (U**H \P**T * B) ]
 *  *
          CALL ZGBTRS( 'N', N, NB, NB, NRHS, TB, LDTB, IPIV2, B, LDB,           CALL ZGBTRS( 'N', N, NB, NB, NRHS, TB, LDTB, IPIV2, B, LDB,
      $               INFO)       $               INFO)
          IF( N.GT.NB ) THEN           IF( N.GT.NB ) THEN
 *  *
 *           Compute (U \ B) -> B   [ U \ (T \ (U**T \P**T * B) ) ]  *           Compute (U \ B) -> B   [ U \ (T \ (U**H \P**T * B) ) ]
 *  *
             CALL ZTRSM( 'L', 'U', 'N', 'U', N-NB, NRHS, ONE, A(1, NB+1),              CALL ZTRSM( 'L', 'U', 'N', 'U', N-NB, NRHS, ONE, A(1, NB+1),
      $                  LDA, B(NB+1, 1), LDB)       $                  LDA, B(NB+1, 1), LDB)
 *  *
 *           Pivot, P * B  [ P * (U \ (T \ (U**T \P**T * B) )) ]  *           Pivot, P * B -> B  [ P * (U \ (T \ (U**H \P**T * B) )) ]
 *  *
             CALL ZLASWP( NRHS, B, LDB, NB+1, N, IPIV, -1 )              CALL ZLASWP( NRHS, B, LDB, NB+1, N, IPIV, -1 )
 *  *
Line 243 Line 244
 *  *
       ELSE        ELSE
 *  *
 *        Solve A*X = B, where A = L*T*L**T.  *        Solve A*X = B, where A = L*T*L**H.
 *  *
          IF( N.GT.NB ) THEN           IF( N.GT.NB ) THEN
 *  *
 *           Pivot, P**T * B  *           Pivot, P**T * B -> B
 *  *
             CALL ZLASWP( NRHS, B, LDB, NB+1, N, IPIV, 1 )              CALL ZLASWP( NRHS, B, LDB, NB+1, N, IPIV, 1 )
 *  *
 *           Compute (L \P**T * B) -> B    [ (L \P**T * B) ]  *           Compute (L \ B) -> B    [ (L \P**T * B) ]
 *  *
             CALL ZTRSM( 'L', 'L', 'N', 'U', N-NB, NRHS, ONE, A(NB+1, 1),              CALL ZTRSM( 'L', 'L', 'N', 'U', N-NB, NRHS, ONE, A(NB+1, 1),
      $                 LDA, B(NB+1, 1), LDB)       $                 LDA, B(NB+1, 1), LDB)
Line 264 Line 265
      $               INFO)       $               INFO)
          IF( N.GT.NB ) THEN           IF( N.GT.NB ) THEN
 *  *
 *           Compute (L**T \ B) -> B   [ L**T \ (T \ (L \P**T * B) ) ]  *           Compute (L**H \ B) -> B   [ L**H \ (T \ (L \P**T * B) ) ]
 *  *
             CALL ZTRSM( 'L', 'L', 'C', 'U', N-NB, NRHS, ONE, A(NB+1, 1),              CALL ZTRSM( 'L', 'L', 'C', 'U', N-NB, NRHS, ONE, A(NB+1, 1),
      $                  LDA, B(NB+1, 1), LDB)       $                  LDA, B(NB+1, 1), LDB)
 *  *
 *           Pivot, P * B  [ P * (L**T \ (T \ (L \P**T * B) )) ]  *           Pivot, P * B -> B  [ P * (L**H \ (T \ (L \P**T * B) )) ]
 *  *
             CALL ZLASWP( NRHS, B, LDB, NB+1, N, IPIV, -1 )              CALL ZLASWP( NRHS, B, LDB, NB+1, N, IPIV, -1 )
 *  *

Removed from v.1.1  
changed lines
  Added in v.1.2


CVSweb interface <joel.bertrand@systella.fr>