--- rpl/lapack/lapack/dlahrd.f 2011/07/22 07:38:06 1.8 +++ rpl/lapack/lapack/dlahrd.f 2011/11/21 20:42:55 1.9 @@ -1,9 +1,178 @@ +*> \brief \b DLAHRD +* +* =========== DOCUMENTATION =========== +* +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ +* +*> \htmlonly +*> Download DLAHRD + dependencies +*> +*> [TGZ] +*> +*> [ZIP] +*> +*> [TXT] +*> \endhtmlonly +* +* Definition: +* =========== +* +* SUBROUTINE DLAHRD( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY ) +* +* .. Scalar Arguments .. +* INTEGER K, LDA, LDT, LDY, N, NB +* .. +* .. Array Arguments .. +* DOUBLE PRECISION A( LDA, * ), T( LDT, NB ), TAU( NB ), +* $ Y( LDY, NB ) +* .. +* +* +*> \par Purpose: +* ============= +*> +*> \verbatim +*> +*> DLAHRD reduces the first NB columns of a real general n-by-(n-k+1) +*> matrix A so that elements below the k-th subdiagonal are zero. The +*> reduction is performed by an orthogonal similarity transformation +*> Q**T * A * Q. The routine returns the matrices V and T which determine +*> Q as a block reflector I - V*T*V**T, and also the matrix Y = A * V * T. +*> +*> This is an OBSOLETE auxiliary routine. +*> This routine will be 'deprecated' in a future release. +*> Please use the new routine DLAHR2 instead. +*> \endverbatim +* +* Arguments: +* ========== +* +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The order of the matrix A. +*> \endverbatim +*> +*> \param[in] K +*> \verbatim +*> K is INTEGER +*> The offset for the reduction. Elements below the k-th +*> subdiagonal in the first NB columns are reduced to zero. +*> \endverbatim +*> +*> \param[in] NB +*> \verbatim +*> NB is INTEGER +*> The number of columns to be reduced. +*> \endverbatim +*> +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N-K+1) +*> On entry, the n-by-(n-k+1) general matrix A. +*> On exit, the elements on and above the k-th subdiagonal in +*> the first NB columns are overwritten with the corresponding +*> elements of the reduced matrix; the elements below the k-th +*> subdiagonal, with the array TAU, represent the matrix Q as a +*> product of elementary reflectors. The other columns of A are +*> unchanged. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (NB) +*> The scalar factors of the elementary reflectors. See Further +*> Details. +*> \endverbatim +*> +*> \param[out] T +*> \verbatim +*> T is DOUBLE PRECISION array, dimension (LDT,NB) +*> The upper triangular matrix T. +*> \endverbatim +*> +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER +*> The leading dimension of the array T. LDT >= NB. +*> \endverbatim +*> +*> \param[out] Y +*> \verbatim +*> Y is DOUBLE PRECISION array, dimension (LDY,NB) +*> The n-by-nb matrix Y. +*> \endverbatim +*> +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER +*> The leading dimension of the array Y. LDY >= N. +*> \endverbatim +* +* Authors: +* ======== +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERauxiliary +* +*> \par Further Details: +* ===================== +*> +*> \verbatim +*> +*> The matrix Q is represented as a product of nb elementary reflectors +*> +*> Q = H(1) H(2) . . . H(nb). +*> +*> Each H(i) has the form +*> +*> H(i) = I - tau * v * v**T +*> +*> where tau is a real scalar, and v is a real vector with +*> v(1:i+k-1) = 0, v(i+k) = 1; v(i+k+1:n) is stored on exit in +*> A(i+k+1:n,i), and tau in TAU(i). +*> +*> The elements of the vectors v together form the (n-k+1)-by-nb matrix +*> V which is needed, with T and Y, to apply the transformation to the +*> unreduced part of the matrix, using an update of the form: +*> A := (I - V*T*V**T) * (A - Y*V**T). +*> +*> The contents of A on exit are illustrated by the following example +*> with n = 7, k = 3 and nb = 2: +*> +*> ( a h a a a ) +*> ( a h a a a ) +*> ( a h a a a ) +*> ( h h a a a ) +*> ( v1 h a a a ) +*> ( v1 v2 a a a ) +*> ( v1 v2 a a a ) +*> +*> where a denotes an element of the original matrix A, h denotes a +*> modified element of the upper Hessenberg matrix H, and vi denotes an +*> element of the vector defining H(i). +*> \endverbatim +*> +* ===================================================================== SUBROUTINE DLAHRD( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY ) * -* -- LAPACK auxiliary routine (version 3.3.1) -- +* -- LAPACK auxiliary routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* -- April 2011 -- +* November 2011 * * .. Scalar Arguments .. INTEGER K, LDA, LDT, LDY, N, NB @@ -13,95 +182,6 @@ $ Y( LDY, NB ) * .. * -* Purpose -* ======= -* -* DLAHRD reduces the first NB columns of a real general n-by-(n-k+1) -* matrix A so that elements below the k-th subdiagonal are zero. The -* reduction is performed by an orthogonal similarity transformation -* Q**T * A * Q. The routine returns the matrices V and T which determine -* Q as a block reflector I - V*T*V**T, and also the matrix Y = A * V * T. -* -* This is an OBSOLETE auxiliary routine. -* This routine will be 'deprecated' in a future release. -* Please use the new routine DLAHR2 instead. -* -* Arguments -* ========= -* -* N (input) INTEGER -* The order of the matrix A. -* -* K (input) INTEGER -* The offset for the reduction. Elements below the k-th -* subdiagonal in the first NB columns are reduced to zero. -* -* NB (input) INTEGER -* The number of columns to be reduced. -* -* A (input/output) DOUBLE PRECISION array, dimension (LDA,N-K+1) -* On entry, the n-by-(n-k+1) general matrix A. -* On exit, the elements on and above the k-th subdiagonal in -* the first NB columns are overwritten with the corresponding -* elements of the reduced matrix; the elements below the k-th -* subdiagonal, with the array TAU, represent the matrix Q as a -* product of elementary reflectors. The other columns of A are -* unchanged. See Further Details. -* -* LDA (input) INTEGER -* The leading dimension of the array A. LDA >= max(1,N). -* -* TAU (output) DOUBLE PRECISION array, dimension (NB) -* The scalar factors of the elementary reflectors. See Further -* Details. -* -* T (output) DOUBLE PRECISION array, dimension (LDT,NB) -* The upper triangular matrix T. -* -* LDT (input) INTEGER -* The leading dimension of the array T. LDT >= NB. -* -* Y (output) DOUBLE PRECISION array, dimension (LDY,NB) -* The n-by-nb matrix Y. -* -* LDY (input) INTEGER -* The leading dimension of the array Y. LDY >= N. -* -* Further Details -* =============== -* -* The matrix Q is represented as a product of nb elementary reflectors -* -* Q = H(1) H(2) . . . H(nb). -* -* Each H(i) has the form -* -* H(i) = I - tau * v * v**T -* -* where tau is a real scalar, and v is a real vector with -* v(1:i+k-1) = 0, v(i+k) = 1; v(i+k+1:n) is stored on exit in -* A(i+k+1:n,i), and tau in TAU(i). -* -* The elements of the vectors v together form the (n-k+1)-by-nb matrix -* V which is needed, with T and Y, to apply the transformation to the -* unreduced part of the matrix, using an update of the form: -* A := (I - V*T*V**T) * (A - Y*V**T). -* -* The contents of A on exit are illustrated by the following example -* with n = 7, k = 3 and nb = 2: -* -* ( a h a a a ) -* ( a h a a a ) -* ( a h a a a ) -* ( h h a a a ) -* ( v1 h a a a ) -* ( v1 v2 a a a ) -* ( v1 v2 a a a ) -* -* where a denotes an element of the original matrix A, h denotes a -* modified element of the upper Hessenberg matrix H, and vi denotes an -* element of the vector defining H(i). -* * ===================================================================== * * .. Parameters ..