2
3
4
5
6
7
8
9 CHARACTER*1 HERM, UPLO
10 INTEGER IOFFD, LDA, M, N
11 COMPLEX*16 ALPHA, BETA
12
13
14 COMPLEX*16 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 DOUBLE PRECISION RZERO
124 parameter( rzero = 0.0d+0 )
125
126
127 INTEGER I, J, JTMP, MN
128
129
130 LOGICAL LSAME
132
133
134 INTRINSIC dble, dcmplx,
max,
min
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 ) = dcmplx( dble( 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 ) = dcmplx( dble( 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 ) = dcmplx( dble( 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