          SEARCH  NEW RPMS  DIRECTORIES  ABOUT  FAQ  VARIOUS  BLOG  DONATE  YUM REPOSITORY    MAN page from openSUSE Leap 42 blas-man-3.5.0-9.1.noarch.rpm

# chemm.f

Section: LAPACK (3)
Updated: Fri Nov 4 2016
Index

chemm.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

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 *`

## Author

Generated 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.  