2
3
4
5
6
7
8
9
10
11
12
13
14 INTEGER INFO, KL, KU, LDAB, M, N
15
16
17 COMPLEX*16 AB( LDAB, * )
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 DOUBLE PRECISION ONE, ZERO
89 parameter( one = 1.0d+0 )
90 parameter( zero = 0.0d+0 )
91 COMPLEX*16 CONE, CZERO
92 parameter( cone = ( 1.0d+0, 0.0d+0 ) )
93 parameter( czero = ( 0.0d+0, 0.0d+0 ) )
94
95
96 INTEGER J, JP, JU, KM, KV
97
98
99 INTEGER ISAMAX
100 EXTERNAL isamax
101
102
103 EXTERNAL zgeru, zscal, zswap
104
105
107
108
109
110
111
112
113 kv = ku
114
115
116
117 info = 0
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136 IF( m.EQ.0 .OR. n.EQ.0 )
137 $ RETURN
138
139
140
141
142
143
144 ju = 1
145
146 DO 40 j = 1,
min( m, n )
147
148
149
150
152 jp = 1
153 IF( ab( kv+1, j ).NE.zero ) THEN
154 ju =
max( ju,
min( j+ku, n ) )
155
156 IF( km.GT.0 ) THEN
157
158
159
160 CALL zscal( km, one / ab( ku+1, j ), ab( ku+2, j ), 1 )
161
162
163
164 IF( ju.GT.j ) THEN
165 CALL zgeru( km, ju-j, -cone, ab( ku+2, j ), 1,
166 $ ab( ku, j+1 ), ldab-1, ab( ku+1, j+1 ),
167 $ ldab-1 )
168 END IF
169 END IF
170 ELSE
171
172 IF( info.EQ.0 )
173 $ info = j
174 END IF
175 40 CONTINUE
176 RETURN
177
178
179