Diff for /rpl/lapack/lapack/ztftri.f between versions 1.5 and 1.6

version 1.5, 2010/12/21 13:53:56 version 1.6, 2011/07/22 07:38:21
Line 1 Line 1
       SUBROUTINE ZTFTRI( TRANSR, UPLO, DIAG, N, A, INFO )        SUBROUTINE ZTFTRI( TRANSR, UPLO, DIAG, N, A, INFO )
 *  *
 *  -- LAPACK routine (version 3.3.0)                                    --  *  -- LAPACK routine (version 3.3.1)                                    --
 *  *
 *  -- Contributed by Fred Gustavson of the IBM Watson Research Center --  *  -- Contributed by Fred Gustavson of the IBM Watson Research Center --
 *     November 2010  *  -- April 2011                                                      --
 *  *
 *  -- 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..--
Line 201 Line 201
       ELSE IF( .NOT.LOWER .AND. .NOT.LSAME( UPLO, 'U' ) ) THEN        ELSE IF( .NOT.LOWER .AND. .NOT.LSAME( UPLO, 'U' ) ) THEN
          INFO = -2           INFO = -2
       ELSE IF( .NOT.LSAME( DIAG, 'N' ) .AND. .NOT.LSAME( DIAG, 'U' ) )        ELSE IF( .NOT.LSAME( DIAG, 'N' ) .AND. .NOT.LSAME( DIAG, 'U' ) )
      +         THEN       $         THEN
          INFO = -3           INFO = -3
       ELSE IF( N.LT.0 ) THEN        ELSE IF( N.LT.0 ) THEN
          INFO = -4           INFO = -4
Line 214 Line 214
 *     Quick return if possible  *     Quick return if possible
 *  *
       IF( N.EQ.0 )        IF( N.EQ.0 )
      +   RETURN       $   RETURN
 *  *
 *     If N is odd, set NISODD = .TRUE.  *     If N is odd, set NISODD = .TRUE.
 *     If N is even, set K = N/2 and NISODD = .FALSE.  *     If N is even, set K = N/2 and NISODD = .FALSE.
Line 255 Line 255
 *  *
                CALL ZTRTRI( 'L', DIAG, N1, A( 0 ), N, INFO )                 CALL ZTRTRI( 'L', DIAG, N1, A( 0 ), N, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'R', 'L', 'N', DIAG, N2, N1, -CONE, A( 0 ),                 CALL ZTRMM( 'R', 'L', 'N', DIAG, N2, N1, -CONE, A( 0 ),
      +                     N, A( N1 ), N )       $                     N, A( N1 ), N )
                CALL ZTRTRI( 'U', DIAG, N2, A( N ), N, INFO )                 CALL ZTRTRI( 'U', DIAG, N2, A( N ), N, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            INFO = INFO + N1       $            INFO = INFO + N1
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'L', 'U', 'C', DIAG, N2, N1, CONE, A( N ), N,                 CALL ZTRMM( 'L', 'U', 'C', DIAG, N2, N1, CONE, A( N ), N,
      +                     A( N1 ), N )       $                     A( N1 ), N )
 *  *
             ELSE              ELSE
 *  *
Line 274 Line 274
 *  *
                CALL ZTRTRI( 'L', DIAG, N1, A( N2 ), N, INFO )                 CALL ZTRTRI( 'L', DIAG, N1, A( N2 ), N, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'L', 'L', 'C', DIAG, N1, N2, -CONE, A( N2 ),                 CALL ZTRMM( 'L', 'L', 'C', DIAG, N1, N2, -CONE, A( N2 ),
      +                     N, A( 0 ), N )       $                     N, A( 0 ), N )
                CALL ZTRTRI( 'U', DIAG, N2, A( N1 ), N, INFO )                 CALL ZTRTRI( 'U', DIAG, N2, A( N1 ), N, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            INFO = INFO + N1       $            INFO = INFO + N1
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'R', 'U', 'N', DIAG, N1, N2, CONE, A( N1 ),                 CALL ZTRMM( 'R', 'U', 'N', DIAG, N1, N2, CONE, A( N1 ),
      +                     N, A( 0 ), N )       $                     N, A( 0 ), N )
 *  *
             END IF              END IF
 *  *
Line 298 Line 298
 *  *
                CALL ZTRTRI( 'U', DIAG, N1, A( 0 ), N1, INFO )                 CALL ZTRTRI( 'U', DIAG, N1, A( 0 ), N1, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'L', 'U', 'N', DIAG, N1, N2, -CONE, A( 0 ),                 CALL ZTRMM( 'L', 'U', 'N', DIAG, N1, N2, -CONE, A( 0 ),
      +                     N1, A( N1*N1 ), N1 )       $                     N1, A( N1*N1 ), N1 )
                CALL ZTRTRI( 'L', DIAG, N2, A( 1 ), N1, INFO )                 CALL ZTRTRI( 'L', DIAG, N2, A( 1 ), N1, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            INFO = INFO + N1       $            INFO = INFO + N1
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'R', 'L', 'C', DIAG, N1, N2, CONE, A( 1 ),                 CALL ZTRMM( 'R', 'L', 'C', DIAG, N1, N2, CONE, A( 1 ),
      +                     N1, A( N1*N1 ), N1 )       $                     N1, A( N1*N1 ), N1 )
 *  *
             ELSE              ELSE
 *  *
Line 316 Line 316
 *  *
                CALL ZTRTRI( 'U', DIAG, N1, A( N2*N2 ), N2, INFO )                 CALL ZTRTRI( 'U', DIAG, N1, A( N2*N2 ), N2, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'R', 'U', 'C', DIAG, N2, N1, -CONE,                 CALL ZTRMM( 'R', 'U', 'C', DIAG, N2, N1, -CONE,
      +                     A( N2*N2 ), N2, A( 0 ), N2 )       $                     A( N2*N2 ), N2, A( 0 ), N2 )
                CALL ZTRTRI( 'L', DIAG, N2, A( N1*N2 ), N2, INFO )                 CALL ZTRTRI( 'L', DIAG, N2, A( N1*N2 ), N2, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            INFO = INFO + N1       $            INFO = INFO + N1
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'L', 'L', 'N', DIAG, N2, N1, CONE,                 CALL ZTRMM( 'L', 'L', 'N', DIAG, N2, N1, CONE,
      +                     A( N1*N2 ), N2, A( 0 ), N2 )       $                     A( N1*N2 ), N2, A( 0 ), N2 )
             END IF              END IF
 *  *
          END IF           END IF
Line 346 Line 346
 *  *
                CALL ZTRTRI( 'L', DIAG, K, A( 1 ), N+1, INFO )                 CALL ZTRTRI( 'L', DIAG, K, A( 1 ), N+1, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'R', 'L', 'N', DIAG, K, K, -CONE, A( 1 ),                 CALL ZTRMM( 'R', 'L', 'N', DIAG, K, K, -CONE, A( 1 ),
      +                     N+1, A( K+1 ), N+1 )       $                     N+1, A( K+1 ), N+1 )
                CALL ZTRTRI( 'U', DIAG, K, A( 0 ), N+1, INFO )                 CALL ZTRTRI( 'U', DIAG, K, A( 0 ), N+1, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            INFO = INFO + K       $            INFO = INFO + K
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'L', 'U', 'C', DIAG, K, K, CONE, A( 0 ), N+1,                 CALL ZTRMM( 'L', 'U', 'C', DIAG, K, K, CONE, A( 0 ), N+1,
      +                     A( K+1 ), N+1 )       $                     A( K+1 ), N+1 )
 *  *
             ELSE              ELSE
 *  *
Line 365 Line 365
 *  *
                CALL ZTRTRI( 'L', DIAG, K, A( K+1 ), N+1, INFO )                 CALL ZTRTRI( 'L', DIAG, K, A( K+1 ), N+1, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'L', 'L', 'C', DIAG, K, K, -CONE, A( K+1 ),                 CALL ZTRMM( 'L', 'L', 'C', DIAG, K, K, -CONE, A( K+1 ),
      +                     N+1, A( 0 ), N+1 )       $                     N+1, A( 0 ), N+1 )
                CALL ZTRTRI( 'U', DIAG, K, A( K ), N+1, INFO )                 CALL ZTRTRI( 'U', DIAG, K, A( K ), N+1, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            INFO = INFO + K       $            INFO = INFO + K
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'R', 'U', 'N', DIAG, K, K, CONE, A( K ), N+1,                 CALL ZTRMM( 'R', 'U', 'N', DIAG, K, K, CONE, A( K ), N+1,
      +                     A( 0 ), N+1 )       $                     A( 0 ), N+1 )
             END IF              END IF
          ELSE           ELSE
 *  *
Line 388 Line 388
 *  *
                CALL ZTRTRI( 'U', DIAG, K, A( K ), K, INFO )                 CALL ZTRTRI( 'U', DIAG, K, A( K ), K, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'L', 'U', 'N', DIAG, K, K, -CONE, A( K ), K,                 CALL ZTRMM( 'L', 'U', 'N', DIAG, K, K, -CONE, A( K ), K,
      +                     A( K*( K+1 ) ), K )       $                     A( K*( K+1 ) ), K )
                CALL ZTRTRI( 'L', DIAG, K, A( 0 ), K, INFO )                 CALL ZTRTRI( 'L', DIAG, K, A( 0 ), K, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            INFO = INFO + K       $            INFO = INFO + K
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'R', 'L', 'C', DIAG, K, K, CONE, A( 0 ), K,                 CALL ZTRMM( 'R', 'L', 'C', DIAG, K, K, CONE, A( 0 ), K,
      +                     A( K*( K+1 ) ), K )       $                     A( K*( K+1 ) ), K )
             ELSE              ELSE
 *  *
 *              SRPA for UPPER, TRANSPOSE and N is even (see paper)  *              SRPA for UPPER, TRANSPOSE and N is even (see paper)
Line 406 Line 406
 *  *
                CALL ZTRTRI( 'U', DIAG, K, A( K*( K+1 ) ), K, INFO )                 CALL ZTRTRI( 'U', DIAG, K, A( K*( K+1 ) ), K, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'R', 'U', 'C', DIAG, K, K, -CONE,                 CALL ZTRMM( 'R', 'U', 'C', DIAG, K, K, -CONE,
      +                     A( K*( K+1 ) ), K, A( 0 ), K )       $                     A( K*( K+1 ) ), K, A( 0 ), K )
                CALL ZTRTRI( 'L', DIAG, K, A( K*K ), K, INFO )                 CALL ZTRTRI( 'L', DIAG, K, A( K*K ), K, INFO )
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            INFO = INFO + K       $            INFO = INFO + K
                IF( INFO.GT.0 )                 IF( INFO.GT.0 )
      +            RETURN       $            RETURN
                CALL ZTRMM( 'L', 'L', 'N', DIAG, K, K, CONE, A( K*K ), K,                 CALL ZTRMM( 'L', 'L', 'N', DIAG, K, K, CONE, A( K*K ), K,
      +                     A( 0 ), K )       $                     A( 0 ), K )
             END IF              END IF
          END IF           END IF
       END IF        END IF

Removed from v.1.5  
changed lines
  Added in v.1.6


CVSweb interface <joel.bertrand@systella.fr>