2
3
4
5
6
7
8
9 CHARACTER*1 DIAG, UPLO
10 INTEGER IOFFD, LDA, LDB, M, N
11
12
13 COMPLEX A( LDA, * ), B( LDB, * )
14
15
16
17
18
19
20
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119 COMPLEX ONE, ZERO
120 parameter( one = ( 1.0e+0, 0.0e+0 ),
121 $ zero = ( 0.0e+0, 0.0e+0 ) )
122
123
124 INTEGER I, ITMP, J, JTMP, MN
125
126
127 LOGICAL LSAME
129
130
132
133
134
135
136 IF( m.LE.0 .OR. n.LE.0 )
137 $ RETURN
138
139
140
141 IF(
lsame( uplo,
'L' ) )
THEN
142
143 mn =
max( 0, -ioffd )
144 DO 20 j = 1,
min( mn, n )
145 DO 10 i = 1, m
146 b( i, j ) = a( i, j )
147 10 CONTINUE
148 20 CONTINUE
149
150 jtmp =
min( m - ioffd, n )
151
152 IF(
lsame( diag,
'N' ) )
THEN
153 DO 50 j = mn + 1, jtmp
154 itmp = j + ioffd
155 DO 30 i = 1, itmp - 1
156 b( i, j ) = zero
157 30 CONTINUE
158 DO 40 i = itmp, m
159 b( i, j ) = a( i, j )
160 40 CONTINUE
161 50 CONTINUE
162 ELSE
163 DO 80 j = mn + 1, jtmp
164 itmp = j + ioffd
165 DO 60 i = 1, itmp - 1
166 b( i, j ) = zero
167 60 CONTINUE
168 b( itmp, j ) = one
169 DO 70 i = itmp + 1, m
170 b( i, j ) = a( i, j )
171 70 CONTINUE
172 80 CONTINUE
173 END IF
174
175 DO 100 j = jtmp + 1, n
176 DO 90 i = 1, m
177 b( i, j ) = zero
178 90 CONTINUE
179 100 CONTINUE
180
181 ELSE IF(
lsame( uplo,
'U' ) )
THEN
182
183 jtmp =
max( 0, -ioffd )
184
185 DO 120 j = 1, jtmp
186 DO 110 i = 1, m
187 b( i, j ) = zero
188 110 CONTINUE
189 120 CONTINUE
190
191 mn =
min( m - ioffd, n )
192
193 IF(
lsame( diag,
'N' ) )
THEN
194 DO 150 j = jtmp + 1, mn
195 itmp = j + ioffd
196 DO 130 i = 1, itmp
197 b( i, j ) = a( i, j )
198 130 CONTINUE
199 DO 140 i = itmp + 1, m
200 b( i, j ) = zero
201 140 CONTINUE
202 150 CONTINUE
203 ELSE
204 DO 180 j = jtmp + 1, mn
205 itmp = j + ioffd
206 DO 160 i = 1, itmp - 1
207 b( i, j ) = a( i, j )
208 160 CONTINUE
209 b( itmp, j ) = one
210 DO 170 i = itmp + 1, m
211 b( i, j ) = zero
212 170 CONTINUE
213 180 CONTINUE
214 END IF
215
216 DO 200 j =
max( 0, mn ) + 1, n
217 DO 190 i = 1, m
218 b( i, j ) = a( i, j )
219 190 CONTINUE
220 200 CONTINUE
221
222 ELSE
223
224 DO 220 j = 1, n
225 DO 210 i = 1, m
226 b( i, j ) = a( i, j )
227 210 CONTINUE
228 220 CONTINUE
229
230 END IF
231
232 RETURN
233
234
235