2
3
4
5
6
7
8
9 CHARACTER*1 HERM, UPLO
10 INTEGER IOFFD, LDA, M, N
11 COMPLEX ALPHA, BETA
12
13
14 COMPLEX A( 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123 REAL RZERO
124 parameter( rzero = 0.0e+0 )
125
126
127 INTEGER I, J, JTMP, MN
128
129
130 LOGICAL LSAME
132
133
135
136
137
138
139
140 IF( m.LE.0 .OR. n.LE.0 )
141 $ RETURN
142
143
144
145 IF(
lsame( uplo,
'L' ) )
THEN
146
147
148
149
150
151 mn =
max( 0, -ioffd )
152 DO 20 j = 1,
min( mn, n )
153 DO 10 i = 1, m
154 a( i, j ) = alpha
155 10 CONTINUE
156 20 CONTINUE
157
158 IF(
lsame( herm,
'Z' ) )
THEN
159 DO 40 j = mn + 1,
min( m - ioffd, n )
160 jtmp = j + ioffd
161 a( jtmp, j ) =
cmplx( real( a( jtmp, j ) ), rzero )
162 DO 30 i = jtmp + 1, m
163 a( i, j ) = alpha
164 30 CONTINUE
165 40 CONTINUE
166 ELSE
167 DO 60 j = mn + 1,
min( m - ioffd, n )
168 jtmp = j + ioffd
169 a( jtmp, j ) = beta
170 DO 50 i = jtmp + 1, m
171 a( i, j ) = alpha
172 50 CONTINUE
173 60 CONTINUE
174 END IF
175
176 ELSE IF(
lsame( uplo,
'U' ) )
THEN
177
178
179
180
181
182 mn =
min( m - ioffd, n )
183 IF(
lsame( herm,
'Z' ) )
THEN
184 DO 80 j =
max( 0, -ioffd ) + 1, mn
185 jtmp = j + ioffd
186 DO 70 i = 1, jtmp - 1
187 a( i, j ) = alpha
188 70 CONTINUE
189 a( jtmp, j ) =
cmplx( real( a( jtmp, j ) ), rzero )
190 80 CONTINUE
191 ELSE
192 DO 100 j =
max( 0, -ioffd ) + 1, mn
193 jtmp = j + ioffd
194 DO 90 i = 1, jtmp - 1
195 a( i, j ) = alpha
196 90 CONTINUE
197 a( jtmp, j ) = beta
198 100 CONTINUE
199 END IF
200 DO 120 j =
max( 0, mn ) + 1, n
201 DO 110 i = 1, m
202 a( i, j ) = alpha
203 110 CONTINUE
204 120 CONTINUE
205
206 ELSE IF(
lsame( uplo,
'D' ) )
THEN
207
208
209
210
211 IF(
lsame( herm,
'Z' ) )
THEN
212 IF( ( ioffd.LT.m ).AND.( ioffd.GT.-n ) ) THEN
213 DO 130 j =
max( 0, -ioffd ) + 1,
min( m - ioffd, n )
214 jtmp = j + ioffd
215 a( jtmp, j ) =
cmplx( real( a( jtmp, j ) ), rzero )
216 130 CONTINUE
217 END IF
218 ELSE
219 IF( ( ioffd.LT.m ).AND.( ioffd.GT.-n ) ) THEN
220 DO 140 j =
max( 0, -ioffd ) + 1,
min( m - ioffd, n )
221 a( j + ioffd, j ) = beta
222 140 CONTINUE
223 END IF
224 END IF
225
226 ELSE
227
228
229
230 DO 160 j = 1, n
231 DO 150 i = 1, m
232 a( i, j ) = alpha
233 150 CONTINUE
234 160 CONTINUE
235 IF( alpha.NE.beta .AND. ioffd.LT.m .AND. ioffd.GT.-n ) THEN
236 DO 170 j =
max( 0, -ioffd ) + 1,
min( m - ioffd, n )
237 a( j + ioffd, j ) = beta
238 170 CONTINUE
239 END IF
240
241 END IF
242
243 RETURN
244
245
246