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 

NAME

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

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 *
 

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.