added lapack 3.7.0 with latest patches from git
This commit is contained in:
161
lapack-netlib/SRC/dlarfy.f
Normal file
161
lapack-netlib/SRC/dlarfy.f
Normal file
@@ -0,0 +1,161 @@
|
||||
*> \brief \b DLARFY
|
||||
*
|
||||
* =========== DOCUMENTATION ===========
|
||||
*
|
||||
* Online html documentation available at
|
||||
* http://www.netlib.org/lapack/explore-html/
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
*
|
||||
* SUBROUTINE DLARFY( UPLO, N, V, INCV, TAU, C, LDC, WORK )
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
* CHARACTER UPLO
|
||||
* INTEGER INCV, LDC, N
|
||||
* DOUBLE PRECISION TAU
|
||||
* ..
|
||||
* .. Array Arguments ..
|
||||
* DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
|
||||
* ..
|
||||
*
|
||||
*
|
||||
*> \par Purpose:
|
||||
* =============
|
||||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> DLARFY applies an elementary reflector, or Householder matrix, H,
|
||||
*> to an n x n symmetric matrix C, from both the left and the right.
|
||||
*>
|
||||
*> H is represented in the form
|
||||
*>
|
||||
*> H = I - tau * v * v'
|
||||
*>
|
||||
*> where tau is a scalar and v is a vector.
|
||||
*>
|
||||
*> If tau is zero, then H is taken to be the unit matrix.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
* ==========
|
||||
*
|
||||
*> \param[in] UPLO
|
||||
*> \verbatim
|
||||
*> UPLO is CHARACTER*1
|
||||
*> Specifies whether the upper or lower triangular part of the
|
||||
*> symmetric matrix C is stored.
|
||||
*> = 'U': Upper triangle
|
||||
*> = 'L': Lower triangle
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] N
|
||||
*> \verbatim
|
||||
*> N is INTEGER
|
||||
*> The number of rows and columns of the matrix C. N >= 0.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] V
|
||||
*> \verbatim
|
||||
*> V is DOUBLE PRECISION array, dimension
|
||||
*> (1 + (N-1)*abs(INCV))
|
||||
*> The vector v as described above.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] INCV
|
||||
*> \verbatim
|
||||
*> INCV is INTEGER
|
||||
*> The increment between successive elements of v. INCV must
|
||||
*> not be zero.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] TAU
|
||||
*> \verbatim
|
||||
*> TAU is DOUBLE PRECISION
|
||||
*> The value tau as described above.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] C
|
||||
*> \verbatim
|
||||
*> C is DOUBLE PRECISION array, dimension (LDC, N)
|
||||
*> On entry, the matrix C.
|
||||
*> On exit, C is overwritten by H * C * H'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LDC
|
||||
*> \verbatim
|
||||
*> LDC is INTEGER
|
||||
*> The leading dimension of the array C. LDC >= max( 1, N ).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] WORK
|
||||
*> \verbatim
|
||||
*> WORK is DOUBLE PRECISION array, dimension (N)
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
* ========
|
||||
*
|
||||
*> \author Univ. of Tennessee
|
||||
*> \author Univ. of California Berkeley
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date December 2016
|
||||
*
|
||||
*> \ingroup double_eig
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DLARFY( UPLO, N, V, INCV, TAU, C, LDC, WORK )
|
||||
*
|
||||
* -- LAPACK test 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 UPLO
|
||||
INTEGER INCV, LDC, N
|
||||
DOUBLE PRECISION TAU
|
||||
* ..
|
||||
* .. Array Arguments ..
|
||||
DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
|
||||
* ..
|
||||
*
|
||||
* =====================================================================
|
||||
*
|
||||
* .. Parameters ..
|
||||
DOUBLE PRECISION ONE, ZERO, HALF
|
||||
PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0, HALF = 0.5D+0 )
|
||||
* ..
|
||||
* .. Local Scalars ..
|
||||
DOUBLE PRECISION ALPHA
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL DAXPY, DSYMV, DSYR2
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
DOUBLE PRECISION DDOT
|
||||
EXTERNAL DDOT
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
IF( TAU.EQ.ZERO )
|
||||
$ RETURN
|
||||
*
|
||||
* Form w:= C * v
|
||||
*
|
||||
CALL DSYMV( UPLO, N, ONE, C, LDC, V, INCV, ZERO, WORK, 1 )
|
||||
*
|
||||
ALPHA = -HALF*TAU*DDOT( N, WORK, 1, V, INCV )
|
||||
CALL DAXPY( N, ALPHA, V, INCV, WORK, 1 )
|
||||
*
|
||||
* C := C - v * w' - w * v'
|
||||
*
|
||||
CALL DSYR2( UPLO, N, -TAU, V, INCV, WORK, 1, C, LDC )
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
* End of DLARFY
|
||||
*
|
||||
END
|
||||
Reference in New Issue
Block a user