3
4
5
6
7
8
9
10
11
12
13
14
15 CHARACTER UPLO, TRANS
16 INTEGER INFO, LDB, N, NRHS
17
18
19 REAL D( * )
20 COMPLEX B( LDB, * ), E( * )
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 LOGICAL NOTRAN, UPPER
82 INTEGER I, J
83
84
85 LOGICAL LSAME
87
88
89 EXTERNAL xerbla
90
91
93
94
95
96
97
98 info = 0
99 notran =
lsame( trans,
'N' )
100 upper =
lsame( uplo,
'U' )
101 IF( .NOT.upper .AND. .NOT.
lsame( uplo,
'L' ) )
THEN
102 info = -1
103 ELSE IF( .NOT.notran .AND. .NOT.
104 $
lsame( trans,
'C' ) )
THEN
105 info = -2
106 ELSE IF( n.LT.0 ) THEN
107 info = -3
108 ELSE IF( nrhs.LT.0 ) THEN
109 info = -4
110 ELSE IF( ldb.LT.
max( 1, n ) )
THEN
111 info = -8
112 END IF
113 IF( info.NE.0 ) THEN
114 CALL xerbla( 'CPTTRS', -info )
115 RETURN
116 END IF
117
118
119
120 IF( n.EQ.0 )
121 $ RETURN
122
123 IF( upper ) THEN
124
125 IF( .NOT.notran ) THEN
126
127 DO 30 j = 1, nrhs
128
129
130
131 DO 10 i = 2, n
132 b( i, j ) = b( i, j ) - b( i-1, j )*conjg( e( i-1 ) )
133 10 CONTINUE
134 30 CONTINUE
135
136 ELSE
137
138 DO 35 j = 1, nrhs
139
140
141
142 DO 20 i = n - 1, 1, -1
143 b( i, j ) = b( i, j ) - b( i+1, j )*e( i )
144 20 CONTINUE
145 35 CONTINUE
146 ENDIF
147
148 ELSE
149
150 IF( notran ) THEN
151
152 DO 60 j = 1, nrhs
153
154
155
156 DO 40 i = 2, n
157 b( i, j ) = b( i, j ) - b( i-1, j )*e( i-1 )
158 40 CONTINUE
159 60 CONTINUE
160
161 ELSE
162
163 DO 65 j = 1, nrhs
164
165
166
167 DO 50 i = n - 1, 1, -1
168 b( i, j ) = b( i, j ) -
169 $ b( i+1, j )*conjg( e( i ) )
170 50 CONTINUE
171 65 CONTINUE
172 ENDIF
173
174 END IF
175
176 RETURN
177
178
179