summaryrefslogtreecommitdiff
path: root/BLAS/SRC/zherk.f
diff options
context:
space:
mode:
Diffstat (limited to 'BLAS/SRC/zherk.f')
-rw-r--r--BLAS/SRC/zherk.f290
1 files changed, 182 insertions, 108 deletions
diff --git a/BLAS/SRC/zherk.f b/BLAS/SRC/zherk.f
index af04413a..f1795c40 100644
--- a/BLAS/SRC/zherk.f
+++ b/BLAS/SRC/zherk.f
@@ -1,125 +1,199 @@
- SUBROUTINE ZHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA,BETA
- INTEGER K,LDA,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),C(LDC,*)
-* ..
+*> \brief \b ZHERK
+*
+* =========== DOCUMENTATION ===========
*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE ZHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA,BETA
+* INTEGER K,LDA,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* ZHERK performs one of the hermitian rank k operations
-*
-* C := alpha*A*A**H + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZHERK performs one of the hermitian rank k operations
+*>
+*> C := alpha*A*A**H + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**H*A + beta*C,
+*>
+*> where alpha and beta are real scalars, C is an n by n hermitian
+*> matrix and A is an n by k matrix in the first case and a k by n
+*> matrix in the second case.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \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:
+*> \endverbatim
+*> \verbatim
+*> UPLO = 'U' or 'u' Only the upper triangular part of C
+*> is to be referenced.
+*> \endverbatim
+*> \verbatim
+*> UPLO = 'L' or 'l' Only the lower triangular part of C
+*> is to be referenced.
+*> \endverbatim
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> TRANS is CHARACTER*1
+*> On entry, TRANS specifies the operation to be performed as
+*> follows:
+*> \endverbatim
+*> \verbatim
+*> TRANS = 'N' or 'n' C := alpha*A*A**H + beta*C.
+*> \endverbatim
+*> \verbatim
+*> TRANS = 'C' or 'c' C := alpha*A**H*A + beta*C.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \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 = 'C' or 'c', K specifies the number of rows of the
+*> matrix A. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION .
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of 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.
+*> \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 ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION.
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX*16 array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the hermitian matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the hermitian matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**H*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are real scalars, C is an n by n hermitian
-* matrix and A is an n by k matrix in the first case and a k by n
-* matrix in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level3
*
-* UPLO - 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 - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*A**H + beta*C.
-*
-* TRANS = 'C' or 'c' C := alpha*A**H*A + beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrix A, and on entry with
-* TRANS = 'C' or 'c', K specifies the number of rows of the
-* matrix A. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of 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 - 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 - DOUBLE PRECISION.
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the hermitian matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the hermitian matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
+*> Ed Anderson, Cray Research Inc.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
*
-* Level 3 Blas routine.
-*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
-* Ed Anderson, Cray Research Inc.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA,BETA
+ INTEGER K,LDA,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),C(LDC,*)
+* ..
*
* =====================================================================
*