17faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \brief \b ZLARF
27faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
37faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  =========== DOCUMENTATION ===========
47faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
57faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* Online html documentation available at
67faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*            http://www.netlib.org/lapack/explore-html/
77faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
87faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \htmlonly
97faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> Download ZLARF + dependencies
107faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlarf.f">
117faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> [TGZ]</a>
127faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlarf.f">
137faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> [ZIP]</a>
147faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlarf.f">
157faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> [TXT]</a>
167faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endhtmlonly
177faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
187faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  Definition:
197faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  ===========
207faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
217faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*       SUBROUTINE ZLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
227faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
237faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*       .. Scalar Arguments ..
247faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*       CHARACTER          SIDE
257faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*       INTEGER            INCV, LDC, M, N
267faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*       COMPLEX*16         TAU
277faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*       ..
287faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*       .. Array Arguments ..
297faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*       COMPLEX*16         C( LDC, * ), V( * ), WORK( * )
307faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*       ..
317faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
327faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
337faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \par Purpose:
347faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  =============
357faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
367faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim
377faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
387faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> ZLARF applies a complex elementary reflector H to a complex M-by-N
397faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> matrix C, from either the left or the right. H is represented in the
407faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> form
417faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
427faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>       H = I - tau * v * v**H
437faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
447faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> where tau is a complex scalar and v is a complex vector.
457faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
467faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> If tau = 0, then H is taken to be the unit matrix.
477faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
487faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> To apply H**H, supply conjg(tau) instead
497faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> tau.
507faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim
517faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
527faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  Arguments:
537faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  ==========
547faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
557faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[in] SIDE
567faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim
577faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          SIDE is CHARACTER*1
587faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          = 'L': form  H * C
597faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          = 'R': form  C * H
607faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim
617faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
627faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[in] M
637faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim
647faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          M is INTEGER
657faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          The number of rows of the matrix C.
667faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim
677faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
687faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[in] N
697faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim
707faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          N is INTEGER
717faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          The number of columns of the matrix C.
727faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim
737faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
747faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[in] V
757faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim
767faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          V is COMPLEX*16 array, dimension
777faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>                     (1 + (M-1)*abs(INCV)) if SIDE = 'L'
787faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>                  or (1 + (N-1)*abs(INCV)) if SIDE = 'R'
797faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          The vector v in the representation of H. V is not used if
807faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          TAU = 0.
817faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim
827faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
837faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[in] INCV
847faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim
857faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          INCV is INTEGER
867faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          The increment between elements of v. INCV <> 0.
877faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim
887faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
897faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[in] TAU
907faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim
917faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          TAU is COMPLEX*16
927faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          The value tau in the representation of H.
937faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim
947faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
957faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[in,out] C
967faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim
977faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          C is COMPLEX*16 array, dimension (LDC,N)
987faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          On entry, the M-by-N matrix C.
997faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          On exit, C is overwritten by the matrix H * C if SIDE = 'L',
1007faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          or C * H if SIDE = 'R'.
1017faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim
1027faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
1037faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[in] LDC
1047faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim
1057faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          LDC is INTEGER
1067faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          The leading dimension of the array C. LDC >= max(1,M).
1077faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim
1087faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>
1097faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[out] WORK
1107faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim
1117faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>          WORK is COMPLEX*16 array, dimension
1127faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>                         (N) if SIDE = 'L'
1137faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*>                      or (M) if SIDE = 'R'
1147faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim
1157faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
1167faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  Authors:
1177faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  ========
1187faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
1197faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \author Univ. of Tennessee
1207faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \author Univ. of California Berkeley
1217faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \author Univ. of Colorado Denver
1227faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \author NAG Ltd.
1237faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
1247faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \date November 2011
1257faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
1267faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \ingroup complex16OTHERauxiliary
1277faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
1287faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  =====================================================================
1297faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      SUBROUTINE ZLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
1307faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
1317faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  -- LAPACK auxiliary routine (version 3.4.0) --
1327faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
1337faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
1347faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     November 2011
1357faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
1367faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     .. Scalar Arguments ..
1377faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      CHARACTER          SIDE
1387faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      INTEGER            INCV, LDC, M, N
1397faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      COMPLEX*16         TAU
1407faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     ..
1417faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     .. Array Arguments ..
1427faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      COMPLEX*16         C( LDC, * ), V( * ), WORK( * )
1437faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     ..
1447faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
1457faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*  =====================================================================
1467faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
1477faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     .. Parameters ..
1487faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      COMPLEX*16         ONE, ZERO
1497faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      PARAMETER          ( ONE = ( 1.0D+0, 0.0D+0 ),
1507faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez     $                   ZERO = ( 0.0D+0, 0.0D+0 ) )
1517faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     ..
1527faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     .. Local Scalars ..
1537faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      LOGICAL            APPLYLEFT
1547faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      INTEGER            I, LASTV, LASTC
1557faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     ..
1567faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     .. External Subroutines ..
1577faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      EXTERNAL           ZGEMV, ZGERC
1587faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     ..
1597faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     .. External Functions ..
1607faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      LOGICAL            LSAME
1617faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      INTEGER            ILAZLR, ILAZLC
1627faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      EXTERNAL           LSAME, ILAZLR, ILAZLC
1637faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     ..
1647faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     .. Executable Statements ..
1657faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
1667faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      APPLYLEFT = LSAME( SIDE, 'L' )
1677faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      LASTV = 0
1687faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      LASTC = 0
1697faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      IF( TAU.NE.ZERO ) THEN
1707faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     Set up variables for scanning V.  LASTV begins pointing to the end
1717faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     of V.
1727faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         IF( APPLYLEFT ) THEN
1737faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            LASTV = M
1747faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         ELSE
1757faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            LASTV = N
1767faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         END IF
1777faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         IF( INCV.GT.0 ) THEN
1787faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            I = 1 + (LASTV-1) * INCV
1797faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         ELSE
1807faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            I = 1
1817faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         END IF
1827faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     Look for the last non-zero row in V.
1837faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         DO WHILE( LASTV.GT.0 .AND. V( I ).EQ.ZERO )
1847faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            LASTV = LASTV - 1
1857faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            I = I - INCV
1867faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         END DO
1877faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         IF( APPLYLEFT ) THEN
1887faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     Scan for the last non-zero column in C(1:lastv,:).
1897faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            LASTC = ILAZLC(LASTV, N, C, LDC)
1907faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         ELSE
1917faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     Scan for the last non-zero row in C(:,1:lastv).
1927faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            LASTC = ILAZLR(M, LASTV, C, LDC)
1937faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         END IF
1947faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      END IF
1957faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     Note that lastc.eq.0 renders the BLAS operations null; no special
1967faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     case is needed at this level.
1977faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      IF( APPLYLEFT ) THEN
1987faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
1997faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*        Form  H * C
2007faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2017faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         IF( LASTV.GT.0 ) THEN
2027faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2037faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*           w(1:lastc,1) := C(1:lastv,1:lastc)**H * v(1:lastv,1)
2047faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2057faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            CALL ZGEMV( 'Conjugate transpose', LASTV, LASTC, ONE,
2067faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez     $           C, LDC, V, INCV, ZERO, WORK, 1 )
2077faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2087faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*           C(1:lastv,1:lastc) := C(...) - v(1:lastv,1) * w(1:lastc,1)**H
2097faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2107faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            CALL ZGERC( LASTV, LASTC, -TAU, V, INCV, WORK, 1, C, LDC )
2117faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         END IF
2127faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      ELSE
2137faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2147faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*        Form  C * H
2157faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2167faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         IF( LASTV.GT.0 ) THEN
2177faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2187faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*           w(1:lastc,1) := C(1:lastc,1:lastv) * v(1:lastv,1)
2197faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2207faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            CALL ZGEMV( 'No transpose', LASTC, LASTV, ONE, C, LDC,
2217faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez     $           V, INCV, ZERO, WORK, 1 )
2227faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2237faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*           C(1:lastc,1:lastv) := C(...) - w(1:lastc,1) * v(1:lastv,1)**H
2247faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2257faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez            CALL ZGERC( LASTC, LASTV, -TAU, WORK, 1, V, INCV, C, LDC )
2267faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez         END IF
2277faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      END IF
2287faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      RETURN
2297faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2307faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*     End of ZLARF
2317faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*
2327faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez      END
233