2
3
4
5
6
7
8
9 CHARACTER*1 HERM, UPLO
10 INTEGER IOFFD, LDA, M, N
11 REAL ALPHA, BETA
12
13
14 REAL 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 INTEGER I, J, JTMP, MN
124
125
126 LOGICAL LSAME
128
129
131
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
144
145
146
147 mn =
max( 0, -ioffd )
148 DO 20 j = 1,
min( mn, n )
149 DO 10 i = 1, m
150 a( i, j ) = alpha
151 10 CONTINUE
152 20 CONTINUE
153
154 IF(
lsame( herm,
'Z' ) )
THEN
155 DO 40 j = mn + 1,
min( m - ioffd, n )
156 jtmp = j + ioffd
157 DO 30 i = jtmp + 1, m
158 a( i, j ) = alpha
159 30 CONTINUE
160 40 CONTINUE
161 ELSE
162 DO 60 j = mn + 1,
min( m - ioffd, n )
163 jtmp = j + ioffd
164 a( jtmp, j ) = beta
165 DO 50 i = jtmp + 1, m
166 a( i, j ) = alpha
167 50 CONTINUE
168 60 CONTINUE
169 END IF
170
171 ELSE IF(
lsame( uplo,
'U' ) )
THEN
172
173
174
175
176
177 mn =
min( m - ioffd, n )
178 IF(
lsame( herm,
'Z' ) )
THEN
179 DO 80 j =
max( 0, -ioffd ) + 1, mn
180 jtmp = j + ioffd
181 DO 70 i = 1, jtmp - 1
182 a( i, j ) = alpha
183 70 CONTINUE
184 80 CONTINUE
185 ELSE
186 DO 100 j =
max( 0, -ioffd ) + 1, mn
187 jtmp = j + ioffd
188 DO 90 i = 1, jtmp - 1
189 a( i, j ) = alpha
190 90 CONTINUE
191 a( jtmp, j ) = beta
192 100 CONTINUE
193 END IF
194 DO 120 j =
max( 0, mn ) + 1, n
195 DO 110 i = 1, m
196 a( i, j ) = alpha
197 110 CONTINUE
198 120 CONTINUE
199
200 ELSE IF(
lsame( uplo,
'D' ) )
THEN
201
202
203
204 IF( .NOT.(
lsame( herm,
'Z' ) ) )
THEN
205 IF( ( ioffd.LT.m ).AND.( ioffd.GT.-n ) ) THEN
206 DO 130 j =
max( 0, -ioffd ) + 1,
min( m - ioffd, n )
207 a( j + ioffd, j ) = beta
208 130 CONTINUE
209 END IF
210 END IF
211
212 ELSE
213
214
215
216 DO 150 j = 1, n
217 DO 140 i = 1, m
218 a( i, j ) = alpha
219 140 CONTINUE
220 150 CONTINUE
221 IF( alpha.NE.beta .AND. ioffd.LT.m .AND. ioffd.GT.-n ) THEN
222 DO 160 j =
max( 0, -ioffd ) + 1,
min( m - ioffd, n )
223 a( j + ioffd, j ) = beta
224 160 CONTINUE
225 END IF
226
227 END IF
228
229 RETURN
230
231
232