|
 |
 |
 |
MAN page from openSUSE Leap 42 blas-man-3.5.0-9.1.noarch.rpm
chemm.fSection: LAPACK (3) Updated: Fri Nov 4 2016 Index NAMEchemm.f - SYNOPSIS Functions/Subroutines subroutine CHEMM (SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC) CHEMM
Function/Subroutine Documentation subroutine CHEMM (character SIDE, character UPLO, integer M, integer N, complex ALPHA, complex, dimension(lda,*) A, integer LDA, complex, dimension(ldb,*) B, integer LDB, complex BETA, complex, dimension(ldc,*) C, integer LDC)CHEMM Purpose: CHEMM performs one of the matrix-matrix operations C := alpha*A*B + beta*C, or C := alpha*B*A + beta*C, where alpha and beta are scalars, A is an hermitian matrix and B and C are m by n matrices.
Parameters: - SIDE
SIDE is CHARACTER*1 On entry, SIDE specifies whether the hermitian matrix A appears on the left or right in the operation as follows: SIDE = 'L' or 'l' C := alpha*A*B + beta*C, SIDE = 'R' or 'r' C := alpha*B*A + beta*C, UPLO
UPLO is CHARACTER*1 On entry, UPLO specifies whether the upper or lower triangular part of the hermitian matrix A is to be referenced as follows: UPLO = 'U' or 'u' Only the upper triangular part of the hermitian matrix is to be referenced. UPLO = 'L' or 'l' Only the lower triangular part of the hermitian matrix is to be referenced. M
M is INTEGER On entry, M specifies the number of rows of the matrix C. M must be at least zero. N
N is INTEGER On entry, N specifies the number of columns of the matrix C. N must be at least zero. ALPHA
ALPHA is COMPLEX On entry, ALPHA specifies the scalar alpha. A
A is COMPLEX array of DIMENSION ( LDA, ka ), where ka is m when SIDE = 'L' or 'l' and is n otherwise. Before entry with SIDE = 'L' or 'l', the m by m part of the array A must contain the hermitian matrix, such that when UPLO = 'U' or 'u', the leading m by m upper triangular part of the array A must contain the upper triangular part of the hermitian matrix and the strictly lower triangular part of A is not referenced, and when UPLO = 'L' or 'l', the leading m by m lower triangular part of the array A must contain the lower triangular part of the hermitian matrix and the strictly upper triangular part of A is not referenced. Before entry with SIDE = 'R' or 'r', the n by n part of the array A must contain the hermitian matrix, such that when UPLO = 'U' or 'u', the leading n by n upper triangular part of the array A must contain the upper triangular part of the hermitian matrix and the strictly lower triangular part of A is not referenced, and when UPLO = 'L' or 'l', the leading n by n lower triangular part of the array A must contain the lower triangular part of the hermitian matrix and the strictly upper triangular part of A is not referenced. Note that the imaginary parts of the diagonal elements need not be set, they are assumed to be zero. LDA
LDA is INTEGER On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. When SIDE = 'L' or 'l' then LDA must be at least max( 1, m ), otherwise LDA must be at least max( 1, n ). B
B is COMPLEX array of DIMENSION ( LDB, n ). Before entry, the leading m by n part of the array B must contain the matrix B. LDB
LDB is INTEGER On entry, LDB specifies the first dimension of B as declared in the calling (sub) program. LDB must be at least max( 1, m ). BETA
BETA is COMPLEX On entry, BETA specifies the scalar beta. When BETA is supplied as zero then C need not be set on input. C
C is COMPLEX array of DIMENSION ( LDC, n ). Before entry, the leading m by n part of the array C must contain the matrix C, except when beta is zero, in which case C need not be set on entry. On exit, the array C is overwritten by the m by n updated matrix. LDC
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, m ).
Author: - Univ. of Tennessee
Univ. of California Berkeley Univ. of Colorado Denver NAG Ltd.
Date: - November 2011
Further Details: 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.
Definition at line 193 of file chemm.f. 193 *194 * -- Reference BLAS level3 routine (version 3.4.0) --195 * -- Reference BLAS is a software package provided by Univ. of Tennessee, --196 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--197 * November 2011198 *199 * .. Scalar Arguments ..200 COMPLEX alpha,beta201 INTEGER lda,ldb,ldc,m,n202 CHARACTER side,uplo203 * ..204 * .. Array Arguments ..205 COMPLEX a(lda,*),b(ldb,*),c(ldc,*)206 * ..207 *208 * =====================================================================209 *210 * .. External Functions ..211 LOGICAL lsame212 EXTERNAL lsame213 * ..214 * .. External Subroutines ..215 EXTERNAL xerbla216 * ..217 * .. Intrinsic Functions ..218 INTRINSIC conjg,max,real219 * ..220 * .. Local Scalars ..221 COMPLEX temp1,temp2222 INTEGER i,info,j,k,nrowa223 LOGICAL upper224 * ..225 * .. Parameters ..226 COMPLEX one227 parameter(one= (1.0e+0,0.0e+0))228 COMPLEX zero229 parameter(zero= (0.0e+0,0.0e+0))230 * ..231 *232 * Set NROWA as the number of rows of A.233 *234 IF (lsame(side,'L')) THEN235 nrowa = m236 ELSE237 nrowa = n238 END IF239 upper = lsame(uplo,'U')240 *241 * Test the input parameters.242 *243 info = 0244 IF ((.NOT.lsame(side,'L')) .AND. (.NOT.lsame(side,'R'))) THEN245 info = 1246 ELSE IF ((.NOT.upper) .AND. (.NOT.lsame(uplo,'L'))) THEN247 info = 2248 ELSE IF (m.LT.0) THEN249 info = 3250 ELSE IF (n.LT.0) THEN251 info = 4252 ELSE IF (lda.LT.max(1,nrowa)) THEN253 info = 7254 ELSE IF (ldb.LT.max(1,m)) THEN255 info = 9256 ELSE IF (ldc.LT.max(1,m)) THEN257 info = 12258 END IF259 IF (info.NE.0) THEN260 CALL xerbla('CHEMM ',info)261 RETURN262 END IF263 *264 * Quick return if possible.265 *266 IF ((m.EQ.0) .OR. (n.EQ.0) .OR.267 + ((alpha.EQ.zero).AND. (beta.EQ.one))) RETURN268 *269 * And when alpha.eq.zero.270 *271 IF (alpha.EQ.zero) THEN272 IF (beta.EQ.zero) THEN273 DO 20 j = 1,n274 DO 10 i = 1,m275 c(i,j) = zero276 10 CONTINUE277 20 CONTINUE278 ELSE279 DO 40 j = 1,n280 DO 30 i = 1,m281 c(i,j) = beta*c(i,j)282 30 CONTINUE283 40 CONTINUE284 END IF285 RETURN286 END IF287 *288 * Start the operations.289 *290 IF (lsame(side,'L')) THEN291 *292 * Form C := alpha*A*B + beta*C.293 *294 IF (upper) THEN295 DO 70 j = 1,n296 DO 60 i = 1,m297 temp1 = alpha*b(i,j)298 temp2 = zero299 DO 50 k = 1,i - 1300 c(k,j) = c(k,j) + temp1*a(k,i)301 temp2 = temp2 + b(k,j)*conjg(a(k,i))302 50 CONTINUE303 IF (beta.EQ.zero) THEN304 c(i,j) = temp1*REAL(A(I,I)) + alpha*temp2305 ELSE306 c(i,j) = beta*c(i,j) + temp1*REAL(A(I,I)) +307 + alpha*temp2308 END IF309 60 CONTINUE310 70 CONTINUE311 ELSE312 DO 100 j = 1,n313 DO 90 i = m,1,-1314 temp1 = alpha*b(i,j)315 temp2 = zero316 DO 80 k = i + 1,m317 c(k,j) = c(k,j) + temp1*a(k,i)318 temp2 = temp2 + b(k,j)*conjg(a(k,i))319 80 CONTINUE320 IF (beta.EQ.zero) THEN321 c(i,j) = temp1*REAL(A(I,I)) + alpha*temp2322 ELSE323 c(i,j) = beta*c(i,j) + temp1*REAL(A(I,I)) +324 + alpha*temp2325 END IF326 90 CONTINUE327 100 CONTINUE328 END IF329 ELSE330 *331 * Form C := alpha*B*A + beta*C.332 *333 DO 170 j = 1,n334 temp1 = alpha*REAL(a(j,j))335 IF (beta.EQ.zero) THEN336 DO 110 i = 1,m337 c(i,j) = temp1*b(i,j)338 110 CONTINUE339 ELSE340 DO 120 i = 1,m341 c(i,j) = beta*c(i,j) + temp1*b(i,j)342 120 CONTINUE343 END IF344 DO 140 k = 1,j - 1345 IF (upper) THEN346 temp1 = alpha*a(k,j)347 ELSE348 temp1 = alpha*conjg(a(j,k))349 END IF350 DO 130 i = 1,m351 c(i,j) = c(i,j) + temp1*b(i,k)352 130 CONTINUE353 140 CONTINUE354 DO 160 k = j + 1,n355 IF (upper) THEN356 temp1 = alpha*conjg(a(j,k))357 ELSE358 temp1 = alpha*a(k,j)359 END IF360 DO 150 i = 1,m361 c(i,j) = c(i,j) + temp1*b(i,k)362 150 CONTINUE363 160 CONTINUE364 170 CONTINUE365 END IF366 *367 RETURN368 *369 * End of CHEMM .370 * AuthorGenerated automatically by Doxygen for LAPACK from the source code. Index- NAME
- SYNOPSIS
- Functions/Subroutines
- Function/Subroutine Documentation
- subroutine CHEMM (character SIDE, character UPLO, integer M, integer N, complex ALPHA, complex, dimension(lda,*) A, integer LDA, complex, dimension(ldb,*) B, integer LDB, complex BETA, complex, dimension(ldc,*) C, integer LDC)
- Author
This document was created byman2html,using the manual pages. |
|
|