17faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \brief \b CLARF 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 CLARF + dependencies 107faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/clarf.f"> 117faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> [TGZ]</a> 127faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/clarf.f"> 137faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> [ZIP]</a> 147faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/clarf.f"> 157faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> [TXT]</a> 167faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endhtmlonly 177faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 187faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* Definition: 197faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* =========== 207faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 217faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* SUBROUTINE CLARF( 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 TAU 277faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. 287faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. Array Arguments .. 297faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* COMPLEX 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*> CLARF 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 (the conjugate transpose of 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 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 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 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 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 complexOTHERauxiliary 1277faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1287faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* ===================================================================== 1297faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez SUBROUTINE CLARF( 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 TAU 1407faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. 1417faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. Array Arguments .. 1427faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez COMPLEX C( LDC, * ), V( * ), WORK( * ) 1437faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. 1447faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1457faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* ===================================================================== 1467faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1477faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. Parameters .. 1487faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez COMPLEX ONE, ZERO 1497faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez PARAMETER ( ONE = ( 1.0E+0, 0.0E+0 ), 1507faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez $ ZERO = ( 0.0E+0, 0.0E+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 CGEMV, CGERC 1587faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. 1597faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. External Functions .. 1607faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez LOGICAL LSAME 1617faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez INTEGER ILACLR, ILACLC 1627faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez EXTERNAL LSAME, ILACLR, ILACLC 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 = ILACLC(LASTV, N, C, LDC) 1907faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE 1917faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez! Scan for the last non-zero row in C(:,1:lastv). 1927faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez LASTC = ILACLR(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 CGEMV( '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 CGERC( 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 CGEMV( '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 CGERC( 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 CLARF 2317faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 2327faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez END 233