version 1.6, 2011/07/22 07:38:10
|
version 1.9, 2012/08/22 09:48:24
|
Line 1
|
Line 1
|
SUBROUTINE DSFRK( TRANSR, UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, |
*> \brief \b DSFRK |
$ C ) |
* |
|
* =========== DOCUMENTATION =========== |
|
* |
|
* Online html documentation available at |
|
* http://www.netlib.org/lapack/explore-html/ |
|
* |
|
*> \htmlonly |
|
*> Download DSFRK + dependencies |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dsfrk.f"> |
|
*> [TGZ]</a> |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dsfrk.f"> |
|
*> [ZIP]</a> |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dsfrk.f"> |
|
*> [TXT]</a> |
|
*> \endhtmlonly |
|
* |
|
* Definition: |
|
* =========== |
|
* |
|
* SUBROUTINE DSFRK( TRANSR, UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, |
|
* C ) |
|
* |
|
* .. Scalar Arguments .. |
|
* DOUBLE PRECISION ALPHA, BETA |
|
* INTEGER K, LDA, N |
|
* CHARACTER TRANS, TRANSR, UPLO |
|
* .. |
|
* .. Array Arguments .. |
|
* DOUBLE PRECISION A( LDA, * ), C( * ) |
|
* .. |
|
* |
|
* |
|
*> \par Purpose: |
|
* ============= |
|
*> |
|
*> \verbatim |
|
*> |
|
*> Level 3 BLAS like routine for C in RFP Format. |
|
*> |
|
*> DSFRK performs one of the symmetric rank--k operations |
|
*> |
|
*> C := alpha*A*A**T + beta*C, |
|
*> |
|
*> or |
|
*> |
|
*> C := alpha*A**T*A + beta*C, |
|
*> |
|
*> where alpha and beta are real scalars, C is an n--by--n symmetric |
|
*> matrix and A is an n--by--k matrix in the first case and a k--by--n |
|
*> matrix in the second case. |
|
*> \endverbatim |
|
* |
|
* Arguments: |
|
* ========== |
|
* |
|
*> \param[in] TRANSR |
|
*> \verbatim |
|
*> TRANSR is CHARACTER*1 |
|
*> = 'N': The Normal Form of RFP A is stored; |
|
*> = 'T': The Transpose Form of RFP A is stored. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] UPLO |
|
*> \verbatim |
|
*> UPLO is CHARACTER*1 |
|
*> On entry, UPLO specifies whether the upper or lower |
|
*> triangular part of the array C is to be referenced as |
|
*> follows: |
|
*> |
|
*> UPLO = 'U' or 'u' Only the upper triangular part of C |
|
*> is to be referenced. |
|
*> |
|
*> UPLO = 'L' or 'l' Only the lower triangular part of C |
|
*> is to be referenced. |
|
*> |
|
*> Unchanged on exit. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] TRANS |
|
*> \verbatim |
|
*> TRANS is CHARACTER*1 |
|
*> On entry, TRANS specifies the operation to be performed as |
|
*> follows: |
|
*> |
|
*> TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C. |
|
*> |
|
*> TRANS = 'T' or 't' C := alpha*A**T*A + beta*C. |
|
*> |
|
*> Unchanged on exit. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] N |
|
*> \verbatim |
|
*> N is INTEGER |
|
*> On entry, N specifies the order of the matrix C. N must be |
|
*> at least zero. |
|
*> Unchanged on exit. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] K |
|
*> \verbatim |
|
*> K is INTEGER |
|
*> On entry with TRANS = 'N' or 'n', K specifies the number |
|
*> of columns of the matrix A, and on entry with TRANS = 'T' |
|
*> or 't', K specifies the number of rows of the matrix A. K |
|
*> must be at least zero. |
|
*> Unchanged on exit. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] ALPHA |
|
*> \verbatim |
|
*> ALPHA is DOUBLE PRECISION |
|
*> On entry, ALPHA specifies the scalar alpha. |
|
*> Unchanged on exit. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] A |
|
*> \verbatim |
|
*> A is DOUBLE PRECISION array, dimension (LDA,ka) |
|
*> where KA |
|
*> is K when TRANS = 'N' or 'n', and is N otherwise. Before |
|
*> entry with TRANS = 'N' or 'n', the leading N--by--K part of |
|
*> the array A must contain the matrix A, otherwise the leading |
|
*> K--by--N part of the array A must contain the matrix A. |
|
*> Unchanged on exit. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] LDA |
|
*> \verbatim |
|
*> LDA is INTEGER |
|
*> On entry, LDA specifies the first dimension of A as declared |
|
*> in the calling (sub) program. When TRANS = 'N' or 'n' |
|
*> then LDA must be at least max( 1, n ), otherwise LDA must |
|
*> be at least max( 1, k ). |
|
*> Unchanged on exit. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] BETA |
|
*> \verbatim |
|
*> BETA is DOUBLE PRECISION |
|
*> On entry, BETA specifies the scalar beta. |
|
*> Unchanged on exit. |
|
*> \endverbatim |
|
*> |
|
*> \param[in,out] C |
|
*> \verbatim |
|
*> C is DOUBLE PRECISION array, dimension (NT) |
|
*> NT = N*(N+1)/2. On entry, the symmetric matrix C in RFP |
|
*> Format. RFP Format is described by TRANSR, UPLO and N. |
|
*> \endverbatim |
|
* |
|
* Authors: |
|
* ======== |
|
* |
|
*> \author Univ. of Tennessee |
|
*> \author Univ. of California Berkeley |
|
*> \author Univ. of Colorado Denver |
|
*> \author NAG Ltd. |
|
* |
|
*> \date November 2011 |
* |
* |
* -- LAPACK routine (version 3.3.1) -- |
*> \ingroup doubleOTHERcomputational |
* |
* |
* -- Contributed by Julien Langou of the Univ. of Colorado Denver -- |
* ===================================================================== |
* -- April 2011 -- |
SUBROUTINE DSFRK( TRANSR, UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, |
|
$ C ) |
* |
* |
|
* -- LAPACK computational routine (version 3.4.0) -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
|
* November 2011 |
* |
* |
* .. |
|
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
DOUBLE PRECISION ALPHA, BETA |
DOUBLE PRECISION ALPHA, BETA |
INTEGER K, LDA, N |
INTEGER K, LDA, N |
Line 19
|
Line 180
|
DOUBLE PRECISION A( LDA, * ), C( * ) |
DOUBLE PRECISION A( LDA, * ), C( * ) |
* .. |
* .. |
* |
* |
* Purpose |
|
* ======= |
|
* |
|
* Level 3 BLAS like routine for C in RFP Format. |
|
* |
|
* DSFRK performs one of the symmetric rank--k operations |
|
* |
|
* C := alpha*A*A**T + beta*C, |
|
* |
|
* or |
|
* |
|
* C := alpha*A**T*A + beta*C, |
|
* |
|
* where alpha and beta are real scalars, C is an n--by--n symmetric |
|
* matrix and A is an n--by--k matrix in the first case and a k--by--n |
|
* matrix in the second case. |
|
* |
|
* Arguments |
|
* ========== |
|
* |
|
* TRANSR (input) CHARACTER*1 |
|
* = 'N': The Normal Form of RFP A is stored; |
|
* = 'T': The Transpose Form of RFP A is stored. |
|
* |
|
* UPLO (input) CHARACTER*1 |
|
* On entry, UPLO specifies whether the upper or lower |
|
* triangular part of the array C is to be referenced as |
|
* follows: |
|
* |
|
* UPLO = 'U' or 'u' Only the upper triangular part of C |
|
* is to be referenced. |
|
* |
|
* UPLO = 'L' or 'l' Only the lower triangular part of C |
|
* is to be referenced. |
|
* |
|
* Unchanged on exit. |
|
* |
|
* TRANS (input) CHARACTER*1 |
|
* On entry, TRANS specifies the operation to be performed as |
|
* follows: |
|
* |
|
* TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C. |
|
* |
|
* TRANS = 'T' or 't' C := alpha*A**T*A + beta*C. |
|
* |
|
* Unchanged on exit. |
|
* |
|
* N (input) INTEGER |
|
* On entry, N specifies the order of the matrix C. N must be |
|
* at least zero. |
|
* Unchanged on exit. |
|
* |
|
* K (input) INTEGER |
|
* On entry with TRANS = 'N' or 'n', K specifies the number |
|
* of columns of the matrix A, and on entry with TRANS = 'T' |
|
* or 't', K specifies the number of rows of the matrix A. K |
|
* must be at least zero. |
|
* Unchanged on exit. |
|
* |
|
* ALPHA (input) DOUBLE PRECISION |
|
* On entry, ALPHA specifies the scalar alpha. |
|
* Unchanged on exit. |
|
* |
|
* A (input) DOUBLE PRECISION array, dimension (LDA,ka) |
|
* where KA |
|
* is K when TRANS = 'N' or 'n', and is N otherwise. Before |
|
* entry with TRANS = 'N' or 'n', the leading N--by--K part of |
|
* the array A must contain the matrix A, otherwise the leading |
|
* K--by--N part of the array A must contain the matrix A. |
|
* Unchanged on exit. |
|
* |
|
* LDA (input) INTEGER |
|
* On entry, LDA specifies the first dimension of A as declared |
|
* in the calling (sub) program. When TRANS = 'N' or 'n' |
|
* then LDA must be at least max( 1, n ), otherwise LDA must |
|
* be at least max( 1, k ). |
|
* Unchanged on exit. |
|
* |
|
* BETA (input) DOUBLE PRECISION |
|
* On entry, BETA specifies the scalar beta. |
|
* Unchanged on exit. |
|
* |
|
* |
|
* C (input/output) DOUBLE PRECISION array, dimension (NT) |
|
* NT = N*(N+1)/2. On entry, the symmetric matrix C in RFP |
|
* Format. RFP Format is described by TRANSR, UPLO and N. |
|
* |
|
* ===================================================================== |
* ===================================================================== |
* |
* |
* .. |
* .. |