|
|
| |
| # lines: |
177 | | # code: |
177 | | # comment: | 0 | |
# blank: | 0 |
| # Variables: | 12 |
| # Callers: | 1 |
| # Callings: | 0 |
| # Words: | 84 |
| # Keywords: | 63 |
|
|
|
|
|
..
.. Array Arguments ..
..
Purpose
=======
ZPTTRSV solves one of the triangular systems
L * X = B, or L**H * X = B,
U * X = B, or U**H * X = B,
where L or U is the Cholesky factor of a Hermitian positive
definite tridiagonal matrix A such that
A = U**H*D*U or A = L*D*L**H (computed by ZPTTRF).
Arguments
=========
UPLO (input) CHARACTER*1
Specifies whether the superdiagonal or the subdiagonal
of the tridiagonal matrix A is stored and the form of the
factorization:
= 'U': E is the superdiagonal of U, and A = U'*D*U;
= 'L': E is the subdiagonal of L, and A = L*D*L'.
(The two forms are equivalent if A is real.)
TRANS (input) CHARACTER
Specifies the form of the system of equations:
= 'N': L * X = B (No transpose)
= 'N': L * X = B (No transpose)
= 'C': U**H * X = B (Conjugate transpose)
= 'C': L**H * X = B (Conjugate transpose)
N (input) INTEGER
The order of the tridiagonal matrix A. N >= 0.
NRHS (input) INTEGER
The number of right hand sides, i.e., the number of columns
of the matrix B. NRHS >= 0.
D (input) REAL array, dimension (N)
The n diagonal elements of the diagonal matrix D from the
factorization computed by ZPTTRF.
E (input) COMPLEX array, dimension (N-1)
The (n-1) off-diagonal elements of the unit bidiagonal
factor U or L from the factorization computed by ZPTTRF
(see UPLO).
B (input/output) COMPLEX array, dimension (LDB,NRHS)
On entry, the right hand side matrix B.
On exit, the solution matrix X.
LDB (input) INTEGER
The leading dimension of the array B. LDB >= max(1,N).
INFO (output) INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
=====================================================================
.. Local Scalars ..
|
|
|
|
001 SUBROUTINE ZPTTRSV( UPLO , TRANS , N , NRHS , D , E , B , LDB ,
002 $INFO )
003
004 * Written by Andrew J. Cleary , University of Tennessee.
005 * November , 1996.
006 * Modified from ZPTTRS :
007 * -- LAPACK routine(preliminary version) --
008 * Univ. of Tennessee , Univ. of California Berkeley , NAG Ltd. ,
009 * Courant Institute , Argonne National Lab , and Rice University
010
011 * .. Scalar Arguments ..
012 CHARACTER UPLO , TRANS
013 INTEGER INFO , LDB , N , NRHS
014 LOGICAL NOTRAN , UPPER
015 INTEGER I , J
016 * ..
017 * .. External Functions ..
018 LOGICAL LSAME
019 EXTERNAL LSAME
020 * ..
021 * .. External Subroutines ..
022 EXTERNAL XERBLA
023 * ..
024 * .. Intrinsic Functions ..
025 INTRINSIC DCONJG , MAX
026 * ..
027 * .. Executable Statements ..
028
029 * Test the input arguments.
030
031 INFO = 0
032 NOTRAN = LSAME( TRANS , 'N' )
033 UPPER = LSAME( UPLO , 'U' )
034 IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO , 'L' ) ) THEN
034
035 INFO = - 1
036 ELSE IF( .NOT.NOTRAN .AND. .NOT.
036
037 $ LSAME( TRANS , 'C' ) ) THEN
038 INFO = - 2
039 ELSE IF( N.LT.0 ) THEN
039
040 INFO = - 3
041 ELSE IF( NRHS.LT.0 ) THEN
041
042 INFO = - 4
043 ELSE IF( LDB.LT.MAX( 1 , N ) ) THEN
043
044 INFO = - 8
045 END IF
046 IF( INFO.NE.0 ) THEN
046
047 CALL XERBLA( 'ZPTTRS' , - INFO )
048 RETURN
049 END IF
050
051 * Quick return if possible
052
053 IF( N.EQ.0 )
053
054 $ RETURN
055
056 IF( UPPER ) THEN
057
057
058 IF( .NOT.NOTRAN ) THEN
059
059
060 DO 30 J = 1 , NRHS
061
062 * Solve U**T(or H) * x = b.
063
063
064 DO 10 I = 2 , N
064
065 B( I , J ) = B( I , J ) - B( I - 1 , J )*DCONJG( E( I - 1 ) )
066 10 CONTINUE
067 30 CONTINUE
068
068
069 ELSE
070
070
071 DO 35 J = 1 , NRHS
072
073 * Solve U * x = b.
074
074
075 DO 20 I = N - 1 , 1 , - 1
075
076 B( I , J ) = B( I , J ) - B( I + 1 , J )*E( I )
077 20 CONTINUE
078 35 CONTINUE
078
079 ENDIF
080
081 ELSE
082
082
083 IF( NOTRAN ) THEN
084
084
085 DO 60 J = 1 , NRHS
086
087 * Solve L * x = b.
088
088
089 DO 40 I = 2 , N
089
090 B( I , J ) = B( I , J ) - B( I - 1 , J )*E( I - 1 )
091 40 CONTINUE
092 60 CONTINUE
093
093
094 ELSE
095
095
096 DO 65 J = 1 , NRHS
097
098 * Solve L**H * x = b.
099
099
100 DO 50 I = N - 1 , 1 , - 1
100
101 B( I , J ) = B( I , J ) -
102 $ B( I + 1 , J )*DCONJG( E( I ) )
103 50 CONTINUE
104 65 CONTINUE
104
105 ENDIF
106
107 END IF
108
109 RETURN
110
111 * End of ZPTTRS
112
113 END28
25
|
|
Variables in Routine ZPTTRSV()
| Summary Report |
| Data Type | Quantity | Size(byte) |
| CHARACTER | 2 | 2 |
| INTEGER | 6 | 24 |
| LOGICAL | 3 | 3 |
| REAL | 1 | 4 |
| TOTAL | 12 | 33 |
List of Variables
CHARACTER
INTEGER
LOGICAL
REAL
Variables Dependence Graph Put the mouse over a right hand side variable to display the corresponding line of the dependence | | - | | - | - | | B | <--- | BB( I, J ) = B( I, J ) -{2B( I, J ) = B( I, J ) - B( I-1, J )*DCONJG( E( I-1 ) ), 3B( I, J ) = B( I, J ) - B( I+1, J )*E( I ), 4B( I, J ) = B( I, J ) - B( I-1, J )*E( I-1 )}, IB( I, J ) = B( I, J ) -{2B( I, J ) = B( I, J ) - B( I-1, J )*DCONJG( E( I-1 ) ), 3B( I, J ) = B( I, J ) - B( I+1, J )*E( I ), 4B( I, J ) = B( I, J ) - B( I-1, J )*E( I-1 )}, JB( I, J ) = B( I, J ) -{2B( I, J ) = B( I, J ) - B( I-1, J )*DCONJG( E( I-1 ) ), 3B( I, J ) = B( I, J ) - B( I+1, J )*E( I ), 4B( I, J ) = B( I, J ) - B( I-1, J )*E( I-1 )} |
| I | <--- | NDO 50 I = N - 1, 1, -1{2DO 10 I = 2, N, 3DO 20 I = N - 1, 1, -1, 4DO 40 I = 2, N} |
| J | <--- | NRHSDO 30 J = 1, NRHS{2DO 35 J = 1, NRHS, 3DO 60 J = 1, NRHS, 4DO 65 J = 1, NRHS} |
| NOTRAN | <--- | TRANSNOTRAN = LSAME( TRANS, 'N' ), LSAMENOTRAN = LSAME( TRANS, 'N' ), NNOTRAN = LSAME( TRANS, 'N' ) |
| UPPER | <--- | UPLOUPPER = LSAME( UPLO, 'U' ), LSAMEUPPER = LSAME( UPLO, 'U' ) |
|
|
Analysis elements of the routine ZPTTRSV() Put the mouse over each element to display detailed matching information
Assigned variables |
| | | I , INFO , J , NOTRAN , UPPER |
|
Active variables |
| | | B , D , E , I , INFO , J , LDB , LSAME , N , NOTRAN , NRHS , TRANS , UPLO , UPPER |
|
Accessed arrays [ array name : associated index ] |
| | B | : I, J , I, J , I, J , I, J , I+1, J , I+1, J , I-1, J , I-1, J |
| | E | : I , I , I-1 , I-1 |
| | LSAME | : TRANS, 'C' , TRANS, 'N' , UPLO, 'L' , UPLO, 'U' |
|
Conditional statements [ statement : associated predicate ] |
| | do | : ( 30 J = 1 , NRHS ) , ( 10 I = 2 , N ) , ( 35 J = 1 , NRHS ) , ( 20 I = N - 1 , 1 , - 1 ) , ( 60 J = 1 , NRHS ) , ( 40 I = 2 , N ) , ( 65 J = 1 , NRHS ) , ( 50 I = N - 1 , 1 , - 1 ) |
| | if | : ( (.NOT.UPPER .AND. .NOT.LSAME( UPLO , 'L' ) ) ) , ( .NOT.NOTRAN .AND. .NOT. ) , ( N.LT.0 ) , ( NRHS.LT.0 ) , ( (LDB.LT.MAX( 1 , N ) ) ) , ( INFO.NE.0 ) , ( possible ) , ( N.EQ.0 ) , ( UPPER ) , ( .NOT.NOTRAN ) , ( NOTRAN ) |
|
| List of variables | B I INFO J LDB LSAME N
| NOTRAN NRHS TRANS UPLO UPPER | | close
| |
B
I
INFO
J
LDB
LSAME
N
NOTRAN
NRHS
TRANS
UPLO
UPPER
| |