160 RECURSIVE SUBROUTINE zlarft( DIRECT, STOREV, N, K, V, LDV,
169 CHARACTER direct, storev
170 INTEGER k, ldt, ldv, n
174 COMPLEX*16 t( ldt, * ), tau( * ), v( ldv, * )
179 COMPLEX*16 one, neg_one, zero
180 parameter(one=1.0d+0, zero = 0.0d+0, neg_one=-1.0d+0)
185 LOGICAL qr,lq,ql,dirf,colv
209 IF(n.EQ.0.OR.k.EQ.0)
THEN
215 IF(n.EQ.1.OR.k.EQ.1)
THEN
229 dirf =
lsame(direct,
'F')
230 colv =
lsame(storev,
'C')
238 lq = dirf.AND.(.NOT.colv)
242 ql = (.NOT.dirf).AND.colv
302 CALL zlarft(direct, storev, n, l, v, ldv, tau, t, ldt)
306 CALL zlarft(direct, storev, n-l, k-l, v(l+1, l+1), ldv,
307 $ tau(l+1), t(l+1, l+1), ldt)
314 t(j, l+i) = conjg(v(l+i, j))
320 CALL ztrmm(
'Right',
'Lower',
'No transpose',
'Unit', l,
321 $ k-l, one, v(l+1, l+1), ldv, t(1, l+1), ldt)
327 CALL zgemm(
'Conjugate',
'No transpose', l, k-l, n-k, one,
328 $ v(k+1, 1), ldv, v(k+1, l+1), ldv, one,
337 CALL ztrmm(
'Left',
'Upper',
'No transpose',
'Non-unit', l,
338 $ k-l, neg_one, t, ldt, t(1, l+1), ldt)
342 CALL ztrmm(
'Right',
'Upper',
'No transpose',
'Non-unit', l,
343 $ k-l, one, t(l+1, l+1), ldt, t(1, l+1), ldt)
397 CALL zlarft(direct, storev, n, l, v, ldv, tau, t, ldt)
401 CALL zlarft(direct, storev, n-l, k-l, v(l+1, l+1), ldv,
402 $ tau(l+1), t(l+1, l+1), ldt)
408 CALL zlacpy(
'All', l, k-l, v(1, l+1), ldv, t(1, l+1), ldt)
412 CALL ztrmm(
'Right',
'Upper',
'Conjugate',
'Unit', l, k-l,
413 $ one, v(l+1, l+1), ldv, t(1, l+1), ldt)
419 CALL zgemm(
'No transpose',
'Conjugate', l, k-l, n-k, one,
420 $ v(1, k+1), ldv, v(l+1, k+1), ldv, one,
429 CALL ztrmm(
'Left',
'Upper',
'No transpose',
'Non-unit', l,
430 $ k-l, neg_one, t, ldt, t(1, l+1), ldt)
435 CALL ztrmm(
'Right',
'Upper',
'No transpose',
'Non-unit', l,
436 $ k-l, one, t(l+1, l+1), ldt, t(1, l+1), ldt)
489 CALL zlarft(direct, storev, n-l, k-l, v, ldv, tau, t, ldt)
493 CALL zlarft(direct, storev, n, l, v(1, k-l+1), ldv,
494 $ tau(k-l+1), t(k-l+1, k-l+1), ldt)
501 t(k-l+i, j) = conjg(v(n-k+j, k-l+i))
507 CALL ztrmm(
'Right',
'Upper',
'No transpose',
'Unit', l,
508 $ k-l, one, v(n-k+1, 1), ldv, t(k-l+1, 1), ldt)
514 CALL zgemm(
'Conjugate',
'No transpose', l, k-l, n-k, one,
515 $ v(1, k-l+1), ldv, v, ldv, one, t(k-l+1, 1),
524 CALL ztrmm(
'Left',
'Lower',
'No transpose',
'Non-unit', l,
525 $ k-l, neg_one, t(k-l+1, k-l+1), ldt,
530 CALL ztrmm(
'Right',
'Lower',
'No transpose',
'Non-unit', l,
531 $ k-l, one, t, ldt, t(k-l+1, 1), ldt)
586 CALL zlarft(direct, storev, n-l, k-l, v, ldv, tau, t, ldt)
590 CALL zlarft(direct, storev, n, l, v(k-l+1, 1), ldv,
591 $ tau(k-l+1), t(k-l+1, k-l+1), ldt)
596 CALL zlacpy(
'All', l, k-l, v(k-l+1, n-k+1), ldv,
602 CALL ztrmm(
'Right',
'Lower',
'Conjugate',
'Unit', l, k-l,
603 $ one, v(1, n-k+1), ldv, t(k-l+1, 1), ldt)
609 CALL zgemm(
'No transpose',
'Conjugate', l, k-l, n-k, one,
610 $ v(k-l+1, 1), ldv, v, ldv, one, t(k-l+1, 1),
620 CALL ztrmm(
'Left',
'Lower',
'No tranpose',
'Non-unit', l,
621 $ k-l, neg_one, t(k-l+1, k-l+1), ldt,
627 CALL ztrmm(
'Right',
'Lower',
'No tranpose',
'Non-unit', l,
628 $ k-l, one, t, ldt, t(k-l+1, 1), ldt)