Numérotation des lignes :

C DLARF     SOURCE    BP208322  18/07/10    21:15:13     9872           *> \brief \b DLARF applies an elementary reflector to a general rectangular matrix.**  =========== DOCUMENTATION ===========** Online html documentation available at*            http://www.netlib.org/lapack/explore-html/**> \htmlonly*> Download DLARF + dependencies*> &lt;a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlarf.f">*> [TGZ]&lt;/a>*> &lt;a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlarf.f">*> [ZIP]&lt;/a>*> &lt;a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlarf.f">*> [TXT]&lt;/a>*> \endhtmlonly**  Definition:*  ===========**       SUBROUTINE DLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )**       .. Scalar Arguments ..*       CHARACTER          SIDE*       INTEGER            INCV, LDC, M, N*       REAL*8   TAU*       ..*       .. Array Arguments ..*       REAL*8   C( LDC, * ), V( * ), WORK( * )*       ..***> \par Purpose:*  =============*>*> \verbatim*>*> DLARF applies a real elementary reflector H to a real m by n matrix*> C, from either the left or the right. H is represented in the form*>*>       H = I - tau * v * v**T*>*> where tau is a real scalar and v is a real vector.*>*> If tau = 0, then H is taken to be the unit matrix.*> \endverbatim**  Arguments:*  ==========**> \param[in] SIDE*> \verbatim*>          SIDE is CHARACTER*1*>          = 'L': form  H * C*>          = 'R': form  C * H*> \endverbatim*>*> \param[in] M*> \verbatim*>          M is INTEGER*>          The number of rows of the matrix C.*> \endverbatim*>*> \param[in] N*> \verbatim*>          N is INTEGER*>          The number of columns of the matrix C.*> \endverbatim*>*> \param[in] V*> \verbatim*>          V is DOUBLE PRECISION array, dimension*>                     (1 + (M-1)*abs(INCV)) if SIDE = 'L'*>                  or (1 + (N-1)*abs(INCV)) if SIDE = 'R'*>          The vector v in the representation of H. V is not used if*>          TAU = 0.*> \endverbatim*>*> \param[in] INCV*> \verbatim*>          INCV is INTEGER*>          The increment between elements of v. INCV &lt;> 0.*> \endverbatim*>*> \param[in] TAU*> \verbatim*>          TAU is DOUBLE PRECISION*>          The value tau in the representation of H.*> \endverbatim*>*> \param[in,out] C*> \verbatim*>          C is DOUBLE PRECISION array, dimension (LDC,N)*>          On entry, the m by n matrix C.*>          On exit, C is overwritten by the matrix H * C if SIDE = 'L',*>          or C * H if SIDE = 'R'.*> \endverbatim*>*> \param[in] LDC*> \verbatim*>          LDC is INTEGER*>          The leading dimension of the array C. LDC >= max(1,M).*> \endverbatim*>*> \param[out] WORK*> \verbatim*>          WORK is DOUBLE PRECISION array, dimension*>                         (N) if SIDE = 'L'*>                      or (M) if SIDE = 'R'*> \endverbatim**  Authors:*  ========**> \author Univ. of Tennessee*> \author Univ. of California Berkeley*> \author Univ. of Colorado Denver*> \author NAG Ltd.**> \date December 2016**> \ingroup doubleOTHERauxiliary**  =====================================================================      SUBROUTINE DLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )**  -- LAPACK auxiliary routine (version 3.7.0) --*  -- LAPACK is a software package provided by Univ. of Tennessee,    --*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--*     December 2016**     .. Scalar Arguments ..      CHARACTER          SIDE      INTEGER            INCV, LDC, M, N      REAL*8   TAU*     ..*     .. Array Arguments ..      REAL*8   C( LDC, * ), V( * ), WORK( * )*     ..**  =====================================================================**     .. Parameters ..      REAL*8   ONE, ZERO      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )*     ..*     .. Local Scalars ..      LOGICAL            APPLYLEFT      INTEGER            I, LASTV, LASTC*     ..*     .. External Subroutines ..      EXTERNAL           DGEMV, DGER*     ..*     .. External Functions ..      LOGICAL            LSAME      INTEGER            ILADLR, ILADLC      EXTERNAL           LSAME, ILADLR, ILADLC*     ..*     .. Executable Statements ..*      APPLYLEFT = LSAME( SIDE, 'L' )      LASTV = 0      LASTC = 0      IF( TAU.NE.ZERO ) THEN*     Set up variables for scanning V.  LASTV begins pointing to the end*     of V.         IF( APPLYLEFT ) THEN            LASTV = M         ELSE            LASTV = N         END IF         IF( INCV.GT.0 ) THEN            I = 1 + (LASTV-1) * INCV         ELSE            I = 1         END IF*     Look for the last non-zero row in V.         DO WHILE( LASTV.GT.0 .AND. V( I ).EQ.ZERO )            LASTV = LASTV - 1            I = I - INCV         END DO         IF( APPLYLEFT ) THEN*     Scan for the last non-zero column in C(1:lastv,:).            LASTC = ILADLC(LASTV, N, C, LDC)         ELSE*     Scan for the last non-zero row in C(:,1:lastv).            LASTC = ILADLR(M, LASTV, C, LDC)         END IF      END IF*     Note that lastc.eq.0 renders the BLAS operations null; no special*     case is needed at this level.      IF( APPLYLEFT ) THEN**        Form  H * C*         IF( LASTV.GT.0 ) THEN**           w(1:lastc,1) := C(1:lastv,1:lastc)**T * v(1:lastv,1)*            CALL DGEMV( 'Transpose', LASTV, LASTC, ONE, C, LDC, V, INCV,     $ZERO, WORK, 1 )** C(1:lastv,1:lastc) := C(...) - v(1:lastv,1) * w(1:lastc,1)**T* CALL DGER( LASTV, LASTC, -TAU, V, INCV, WORK, 1, C, LDC ) END IF ELSE** Form C * H* IF( LASTV.GT.0 ) THEN** w(1:lastc,1) := C(1:lastc,1:lastv) * v(1:lastv,1)* CALL DGEMV( 'No transpose', LASTC, LASTV, ONE, C, LDC,$           V, INCV, ZERO, WORK, 1 )**           C(1:lastc,1:lastv) := C(...) - w(1:lastc,1) * v(1:lastv,1)**T*            CALL DGER( LASTC, LASTV, -TAU, WORK, 1, V, INCV, C, LDC )         END IF      END IF      RETURN**     End of DLARF*      END

© Cast3M 2003 - Tous droits réservés.
Mentions légales