152{
153
154 integer a_dim1, a_offset, c_dim1, c_offset, i__1, i__2, i__3;
156
158
159 integer i__, i1, i2, i3, ic, jc, mi, ni, nq;
163 extern
165 extern logical lsame_(
char *,
char *);
166 extern
167 int xerbla_(
char *,
integer *);
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191 a_dim1 = *lda;
192 a_offset = 1 + a_dim1;
193 a -= a_offset;
194 --tau;
195 c_dim1 = *ldc;
196 c_offset = 1 + c_dim1;
197 c__ -= c_offset;
198 --work;
199
200 *info = 0;
201 left = lsame_(side, "L");
202 notran = lsame_(trans, "N");
203
204 if (left)
205 {
206 nq = *m;
207 }
208 else
209 {
210 nq = *n;
211 }
212 if (! left && ! lsame_(side, "R"))
213 {
214 *info = -1;
215 }
216 else if (! notran && ! lsame_(trans, "C"))
217 {
218 *info = -2;
219 }
220 else if (*m < 0)
221 {
222 *info = -3;
223 }
224 else if (*n < 0)
225 {
226 *info = -4;
227 }
228 else if (*k < 0 || *k > nq)
229 {
230 *info = -5;
231 }
232 else if (*lda < max(1,nq))
233 {
234 *info = -7;
235 }
236 else if (*ldc < max(1,*m))
237 {
238 *info = -10;
239 }
240 if (*info != 0)
241 {
242 i__1 = -(*info);
243 xerbla_("CUNM2R", &i__1);
244 return 0;
245 }
246
247 if (*m == 0 || *n == 0 || *k == 0)
248 {
249 return 0;
250 }
251 if (left && ! notran || ! left && notran)
252 {
253 i1 = 1;
254 i2 = *k;
255 i3 = 1;
256 }
257 else
258 {
259 i1 = *k;
260 i2 = 1;
261 i3 = -1;
262 }
263 if (left)
264 {
265 ni = *n;
266 jc = 1;
267 }
268 else
269 {
270 mi = *m;
271 ic = 1;
272 }
273 i__1 = i2;
274 i__2 = i3;
275 for (i__ = i1;
276 i__2 < 0 ? i__ >= i__1 : i__ <= i__1;
277 i__ += i__2)
278 {
279 if (left)
280 {
281
282 mi = *m - i__ + 1;
283 ic = i__;
284 }
285 else
286 {
287
288 ni = *n - i__ + 1;
289 jc = i__;
290 }
291
292 if (notran)
293 {
294 i__3 = i__;
295 taui.
r = tau[i__3].
r;
296 taui.
i = tau[i__3].
i;
297 }
298 else
299 {
300 r_cnjg(&q__1, &tau[i__]);
303 }
304 i__3 = i__ + i__ * a_dim1;
307 i__3 = i__ + i__ * a_dim1;
310 clarf_(side, &mi, &ni, &a[i__ + i__ * a_dim1], &c__1, &taui, &c__[ic + jc * c_dim1], ldc, &work[1]);
311 i__3 = i__ + i__ * a_dim1;
314
315 }
316 return 0;
317
318}
int integer
Definition FLA_f2c.h:25
int logical
Definition FLA_f2c.h:36
real r
Definition FLA_f2c.h:32
real i
Definition FLA_f2c.h:32