SEARCH NEW RPMS DIRECTORIES ABOUT FAQ VARIOUS BLOG DONATE YUM REPOSITORY

MAN page from OpenSuSE blas-man-3.4.2-3.6.16.noarch.rpm

# csymm.f

Section: LAPACK (3)
Updated: Thu Jun 23 2016
Index

csymm.f -

## SYNOPSIS

### Functions/Subroutines

subroutine CSYMM (SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CSYMM

## Function/Subroutine Documentation

### subroutine CSYMM (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)

CSYMM

Purpose:

` CSYMM  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 a symmetric matrix and  B and C are m by n matrices.`

Parameters:

SIDE

`          SIDE is CHARACTER*1           On entry,  SIDE  specifies whether  the  symmetric 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  symmetric  matrix   A  is  to  be           referenced as follows:              UPLO = 'U' or 'u'   Only the upper triangular part of the                                  symmetric matrix is to be referenced.              UPLO = 'L' or 'l'   Only the lower triangular part of the                                  symmetric 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  symmetric 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  symmetric 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  symmetric           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  symmetric 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  symmetric 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  symmetric           matrix and the  strictly upper triangular part of  A  is not           referenced.`

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 191 of file csymm.f.

`191 *192 *  -- Reference BLAS level3 routine (version 3.4.0) --193 *  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --194 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--195 *     November 2011196 *197 *     .. Scalar Arguments ..198       COMPLEX alpha,beta199       INTEGER lda,ldb,ldc,m,n200       CHARACTER side,uplo201 *     ..202 *     .. Array Arguments ..203       COMPLEX a(lda,*),b(ldb,*),c(ldc,*)204 *     ..205 *206 *  =====================================================================207 *208 *     .. External Functions ..209       LOGICAL lsame210       EXTERNAL lsame211 *     ..212 *     .. External Subroutines ..213       EXTERNAL xerbla214 *     ..215 *     .. Intrinsic Functions ..216       INTRINSIC max217 *     ..218 *     .. Local Scalars ..219       COMPLEX temp1,temp2220       INTEGER i,info,j,k,nrowa221       LOGICAL upper222 *     ..223 *     .. Parameters ..224       COMPLEX one225       parameter(one= (1.0e+0,0.0e+0))226       COMPLEX zero227       parameter(zero= (0.0e+0,0.0e+0))228 *     ..229 *230 *     Set NROWA as the number of rows of A.231 *232       IF (lsame(side,'L')) THEN233           nrowa = m234       ELSE235           nrowa = n236       END IF237       upper = lsame(uplo,'U')238 *239 *     Test the input parameters.240 *241       info = 0242       IF ((.NOT.lsame(side,'L')) .AND. (.NOT.lsame(side,'R'))) THEN243           info = 1244       ELSE IF ((.NOT.upper) .AND. (.NOT.lsame(uplo,'L'))) THEN245           info = 2246       ELSE IF (m.LT.0) THEN247           info = 3248       ELSE IF (n.LT.0) THEN249           info = 4250       ELSE IF (lda.LT.max(1,nrowa)) THEN251           info = 7252       ELSE IF (ldb.LT.max(1,m)) THEN253           info = 9254       ELSE IF (ldc.LT.max(1,m)) THEN255           info = 12256       END IF257       IF (info.NE.0) THEN258           CALL xerbla('CSYMM ',info)259           RETURN260       END IF261 *262 *     Quick return if possible.263 *264       IF ((m.EQ.0) .OR. (n.EQ.0) .OR.265      +    ((alpha.EQ.zero).AND. (beta.EQ.one))) RETURN266 *267 *     And when  alpha.eq.zero.268 *269       IF (alpha.EQ.zero) THEN270           IF (beta.EQ.zero) THEN271               DO 20 j = 1,n272                   DO 10 i = 1,m273                       c(i,j) = zero274    10             CONTINUE275    20         CONTINUE276           ELSE277               DO 40 j = 1,n278                   DO 30 i = 1,m279                       c(i,j) = beta*c(i,j)280    30             CONTINUE281    40         CONTINUE282           END IF283           RETURN284       END IF285 *286 *     Start the operations.287 *288       IF (lsame(side,'L')) THEN289 *290 *        Form  C := alpha*A*B + beta*C.291 *292           IF (upper) THEN293               DO 70 j = 1,n294                   DO 60 i = 1,m295                       temp1 = alpha*b(i,j)296                       temp2 = zero297                       DO 50 k = 1,i - 1298                           c(k,j) = c(k,j) + temp1*a(k,i)299                           temp2 = temp2 + b(k,j)*a(k,i)300    50                 CONTINUE301                       IF (beta.EQ.zero) THEN302                           c(i,j) = temp1*a(i,i) + alpha*temp2303                       ELSE304                           c(i,j) = beta*c(i,j) + temp1*a(i,i) +305      +                             alpha*temp2306                       END IF307    60             CONTINUE308    70         CONTINUE309           ELSE310               DO 100 j = 1,n311                   DO 90 i = m,1,-1312                       temp1 = alpha*b(i,j)313                       temp2 = zero314                       DO 80 k = i + 1,m315                           c(k,j) = c(k,j) + temp1*a(k,i)316                           temp2 = temp2 + b(k,j)*a(k,i)317    80                 CONTINUE318                       IF (beta.EQ.zero) THEN319                           c(i,j) = temp1*a(i,i) + alpha*temp2320                       ELSE321                           c(i,j) = beta*c(i,j) + temp1*a(i,i) +322      +                             alpha*temp2323                       END IF324    90             CONTINUE325   100         CONTINUE326           END IF327       ELSE328 *329 *        Form  C := alpha*B*A + beta*C.330 *331           DO 170 j = 1,n332               temp1 = alpha*a(j,j)333               IF (beta.EQ.zero) THEN334                   DO 110 i = 1,m335                       c(i,j) = temp1*b(i,j)336   110             CONTINUE337               ELSE338                   DO 120 i = 1,m339                       c(i,j) = beta*c(i,j) + temp1*b(i,j)340   120             CONTINUE341               END IF342               DO 140 k = 1,j - 1343                   IF (upper) THEN344                       temp1 = alpha*a(k,j)345                   ELSE346                       temp1 = alpha*a(j,k)347                   END IF348                   DO 130 i = 1,m349                       c(i,j) = c(i,j) + temp1*b(i,k)350   130             CONTINUE351   140         CONTINUE352               DO 160 k = j + 1,n353                   IF (upper) THEN354                       temp1 = alpha*a(j,k)355                   ELSE356                       temp1 = alpha*a(k,j)357                   END IF358                   DO 150 i = 1,m359                       c(i,j) = c(i,j) + temp1*b(i,k)360   150             CONTINUE361   160         CONTINUE362   170     CONTINUE363       END IF364 *365       RETURN366 *367 *     End of CSYMM .368 *`

## Author

Generated automatically by Doxygen for LAPACK from the source code.

## Index

NAME
SYNOPSIS
Functions/Subroutines
Function/Subroutine Documentation
subroutine CSYMM (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.