2
3
4
5
6
7
8
9 CHARACTER*1 UPLO
10 INTEGER IOFFD, LDA, M, N
11 COMPLEX ALPHA
12
13
14 COMPLEX ( LDA, * )
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 COMPLEX ONE, ZERO
108 parameter( one = ( 1.0e+0, 0.0e+0 ),
109 $ zero = ( 0.0e+0,
110
111
112 INTEGER I, J, JTMP, MN
113
114
116
117
118 LOGICAL LSAME
120
121
123
124
125
126
127
128 IF( ( m.LE.0 ).OR.( n.LE.0 ) )
129 $ RETURN
130
131
132
133 IF(
alpha.EQ.zero )
THEN
134
135 CALL ctzpad( uplo,
'N', m, n, ioffd, zero, zero, a, lda )
136
137 ELSE IF(
alpha.EQ.one )
THEN
138
139 IF(
lsame( uplo, 'l
' ) ) THEN
140
141 MN = MAX( 0, -IOFFD )
142 DO 20 J = 1, MIN( MN, N )
143 DO 10 I = 1, M
144 A( I, J ) = CONJG( A( I, J ) )
145 10 CONTINUE
146 20 CONTINUE
147
148 DO 40 J = MN + 1, MIN( M - IOFFD, N )
149 DO 30 I = J + IOFFD, M
150 A( I, J ) = CONJG( A( I, J ) )
151 30 CONTINUE
152 40 CONTINUE
153
154 ELSE IF( LSAME( UPLO, 'u' ) ) THEN
155
156
157
158 MN = MIN( M - IOFFD, N )
159 DO 60 J = MAX( 0, -IOFFD ) + 1, MN
160 DO 50 I = 1, J + IOFFD
161 A( I, J ) = CONJG( A( I, J ) )
162 50 CONTINUE
163 60 CONTINUE
164
165 DO 80 J = MAX( 0, MN ) + 1, N
166 DO 70 I = 1, M
167 A( I, J ) = CONJG( A( I, J ) )
168 70 CONTINUE
169 80 CONTINUE
170
171 ELSE IF( LSAME( UPLO, 'd' ) ) THEN
172
173
174
175 DO 90 J = MAX( 0, -IOFFD ) + 1, MIN( M - IOFFD, N )
176 JTMP = J + IOFFD
177 A( JTMP, J ) = CONJG( A( JTMP, J ) )
178 90 CONTINUE
179
180 ELSE
181
182
183
184 DO 110 J = 1, N
185 DO 100 I = 1, M
186 A( I, J ) = CONJG( A( I, J ) )
187 100 CONTINUE
188 110 CONTINUE
189
190 END IF
191
192 ELSE
193
194 IF( LSAME( UPLO, 'l' ) ) THEN
195
196
197
198 MN = MAX( 0, -IOFFD )
199 DO 130 J = 1, MIN( MN, N )
200 DO 120 I = 1, M
201 A( I, J ) = ALPHA * CONJG( A( I, J ) )
202 120 CONTINUE
203 130 CONTINUE
204
205 DO 150 J = MN + 1, MIN( M - IOFFD, N )
206 DO 140 I = J + IOFFD, M
207 A( I, J ) = ALPHA * CONJG( A( I, J ) )
208 140 CONTINUE
209 150 CONTINUE
210
211 ELSE IF( LSAME( UPLO, 'u' ) ) THEN
212
213
214
215 MN = MIN( M - IOFFD, N )
216 DO 170 J = MAX( 0, -IOFFD ) + 1, MN
217 DO 160 I = 1, J + IOFFD
218 A( I, J ) = ALPHA * CONJG( A( I, J ) )
219 160 CONTINUE
220 170 CONTINUE
221
222 DO 190 J = MAX( 0, MN ) + 1, N
223 DO 180 I = 1, M
224 A( I, J ) = ALPHA * CONJG( A( I, J ) )
225 180 CONTINUE
226 190 CONTINUE
227
228 ELSE IF( LSAME( UPLO, 'd' ) ) THEN
229
230
231
232 DO 200 J = MAX( 0, -IOFFD ) + 1, MIN( M - IOFFD, N )
233 JTMP = J + IOFFD
234 A( JTMP, J ) = ALPHA * CONJG( A( JTMP, J ) )
235 200 CONTINUE
236
237 ELSE
238
239
240
241 DO 220 J = 1, N
242 DO 210 I = 1, M
243 A( I, J ) = ALPHA * CONJG( A( I, J ) )
244 210 CONTINUE
245 220 CONTINUE
246
247 END IF
248
249 END IF
250
251 RETURN
252
253
254
subroutine ctzpad(uplo, herm, m, n, ioffd, alpha, beta, a, lda)
logical function lsame(ca, cb)
LSAME