103{
104
105 integer a_dim1, a_offset, i__1, i__2, i__3;
107
109
111 extern
112 int cscal_(
integer *,
complex *,
complex *,
integer *), clarf_(
char *,
integer *,
integer *,
complex *,
integer *,
complex *,
complex *,
integer *,
complex *), clacgv_(
integer *,
complex *,
integer *), xerbla_(
char *,
integer *);
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133 a_dim1 = *lda;
134 a_offset = 1 + a_dim1;
135 a -= a_offset;
136 --tau;
137 --work;
138
139 *info = 0;
140 if (*m < 0)
141 {
142 *info = -1;
143 }
144 else if (*n < *m)
145 {
146 *info = -2;
147 }
148 else if (*k < 0 || *k > *m)
149 {
150 *info = -3;
151 }
152 else if (*lda < max(1,*m))
153 {
154 *info = -5;
155 }
156 if (*info != 0)
157 {
158 i__1 = -(*info);
159 xerbla_("CUNGL2", &i__1);
160 return 0;
161 }
162
163 if (*m <= 0)
164 {
165 return 0;
166 }
167 if (*k < *m)
168 {
169
170 i__1 = *n;
171 for (j = 1;
172 j <= i__1;
173 ++j)
174 {
175 i__2 = *m;
176 for (l = *k + 1;
177 l <= i__2;
178 ++l)
179 {
180 i__3 = l + j * a_dim1;
183
184 }
185 if (j > *k && j <= *m)
186 {
187 i__2 = j + j * a_dim1;
190 }
191
192 }
193 }
194 for (i__ = *k;
195 i__ >= 1;
196 --i__)
197 {
198
199 if (i__ < *n)
200 {
201 i__1 = *n - i__;
202 clacgv_(&i__1, &a[i__ + (i__ + 1) * a_dim1], lda);
203 if (i__ < *m)
204 {
205 i__1 = i__ + i__ * a_dim1;
208 i__1 = *m - i__;
209 i__2 = *n - i__ + 1;
210 r_cnjg(&q__1, &tau[i__]);
211 clarf_("Right", &i__1, &i__2, &a[i__ + i__ * a_dim1], lda, & q__1, &a[i__ + 1 + i__ * a_dim1], lda, &work[1]);
212 }
213 i__1 = *n - i__;
214 i__2 = i__;
215 q__1.
r = -tau[i__2].
r;
216 q__1.
i = -tau[i__2].
i;
217 cscal_(&i__1, &q__1, &a[i__ + (i__ + 1) * a_dim1], lda);
218 i__1 = *n - i__;
219 clacgv_(&i__1, &a[i__ + (i__ + 1) * a_dim1], lda);
220 }
221 i__1 = i__ + i__ * a_dim1;
222 r_cnjg(&q__2, &tau[i__]);
223 q__1.
r = 1.f - q__2.
r;
224 q__1.
i = 0.f - q__2.
i;
227
228 i__1 = i__ - 1;
229 for (l = 1;
230 l <= i__1;
231 ++l)
232 {
233 i__2 = i__ + l * a_dim1;
236
237 }
238
239 }
240 return 0;
241
242}
int integer
Definition FLA_f2c.h:25
real r
Definition FLA_f2c.h:32
real i
Definition FLA_f2c.h:32