_SYMM(3F) _SYMM(3F)
dsymm, ssymm, zsymm, csymm - BLAS level three Symmetric Matrix Product
FORTRAN 77 SYNOPSIS
subroutine dsymm( side,uplo,m,n,alpha,a,lda,b,ldb,beta,c,ldc )
character*1 side,uplo
integer m, n, lda, ldb, ldc
double precision alpha, beta
double precision a( lda,*), b(ldb,*), c(ldc,*)
subroutine ssymm( side,uplo,m,n,alpha,a,lda,b,ldb,beta,c,ldc )
character*1 side,uplo
integer m, n, lda, ldb, ldc
real alpha, beta
real a( lda,*), b(ldb,*), c(ldc,*)
subroutine zsymm( side,uplo,m,n,alpha,a,lda,b,ldb,beta,c,ldc )
character*1 side,uplo
integer m, n, lda, ldb, ldc
double complex alpha, beta
double complex a( lda,*), b(ldb,*), c(ldc,*)
subroutine csymm( side,uplo,m,n,alpha,a,lda,b,ldb,beta,c,ldc )
character*1 side,uplo
integer m, n, lda, ldb, ldc
complex alpha, beta
complex a( lda,*), b(ldb,*), c(ldc,*)
void dsymm( side,uplo,m,n,alpha,a,lda,b,ldb,beta,c,ldc )
OperationSide side;
MatrixTriangle uplo;
Integer m, n, lda, ldb, ldc;
double alpha, beta;
double (*a)[lda*ka], (*b)[lda*n], (*c)[lda*n];
void ssymm( side,uplo,m,n,alpha,a,lda,b,ldb,beta,c,ldc )
OperationSide side;
MatrixTriangle uplo;
Integer m, n, lda, ldb, ldc;
float alpha, beta;
float (*a)[lda*ka], (*b)[lda*n], (*c)[lda*n];
void zsymm( side,uplo,m,n,alpha,a,lda,b,ldb,beta,c,ldc )
OperationSide side;
MatrixTriangle uplo;
Integer m, n, lda, ldb, ldc;
Zomplex alpha, beta;
Zomplex (*a)[lda*ka], (*b)[lda*n], (*c)[lda*n];
Page 1
_SYMM(3F) _SYMM(3F)
void csymm( side,uplo,m,n,alpha,a,lda,b,ldb,beta,c,ldc )
OperationSide side;
MatrixTriangle uplo;
Integer m, n, lda, ldb, ldc;
Complex alpha, beta;
Complex (*a)[lda*ka], (*b)[lda*n], (*c)[lda*n];
dsymm, ssymm, zsymm and csymm
perform 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.
side On entry, side specifies whether op( A ) multiplies B from the
left or right as follows:
FORTRAN
side = 'L' or 'l' B := alpha*op( A )*B.
side = 'R' or 'r' B := alpha*B*op( A ).
C
side = LeftSide B := alpha*op( A )*B.
side = RightSide B := alpha*B*op( A ).
Unchanged on exit.
uplo On entry, uplo specifies whether the matrix A is an upper or
lower triangular matrix as follows:
FORTRAN
uplo = 'U' or 'u' A is an upper triangular matrix.
uplo = 'L' or 'l' A is a lower triangular matrix.
C
uplo = UpperTriangle A is an upper triangular matrix.
uplo = LowerTriangle A is a lower triangular matrix.
Unchanged on exit.
Page 2
_SYMM(3F) _SYMM(3F)
m On entry, m specifies the number of rows of the matrix C. m must
be at least zero.
Unchanged on exit.
n On entry, n specifies the number of columns of the matrix C. n
must be at least zero.
Unchanged on exit.
alpha On entry, alpha specifies the scalar alpha. When alpha is zero
then a is not referenced and b need not be set before entry.
Page 3
_SYMM(3F) _SYMM(3F)
Unchanged on exit.
a An array containing the matrix A.
FORTRAN
Array of dimension (lda, ka).
C
A pointer to an array of size lda*ka.
See note below about array storage convention for C.
ka is m when side = 'L' or 'l' or LeftSide and is n otherwise.
Before entry with side = 'L' or 'l' or LeftSide, the array
elements corresponding to the m by m part of the matrix A must
contain the symmetric matrix, such that when:
uplo = 'U' or 'u' or UpperTriangle, the array elements that
correspond to the leading m by m upper triangular part of the
matrix A must contain the upper triangular part of the symmetric
matrix and the corresponding strictly lower triangular part of A
is not referenced,
and when uplo = 'L' or 'l' or LowerTriangle, the array elements
that correspond to the leading m by m lower triangular part of
the matrix A must contain the lower triangular part of the
symmetric matrix and the corresponding strictly upper triangular
part of A is not referenced.
Before entry with side = 'R' or 'r' or RightSide, the array
elements corresponding to the n by n part of the matrix A must
contain the symmetric matrix, such that when:
uplo = 'U' or 'u' or UpperTriangle, the array elements that
correspond to the leading n by n upper triangular part of the
matrix A must contain the upper triangular part of the symmetric
matrix and the corresponding strictly lower triangular part of A
is not referenced,
and when uplo = 'L' or 'l' or LowerTriangle, the array elements
that correspond to the leading n by n lower triangular part of
the matrix A must contain the lower triangular part of the
symmetric matrix and the corresponding strictly upper triangular
part of A is not referenced.
Unchanged on exit.
lda On entry, lda specifies the first dimension of a as declared in
the calling (sub) program. When side = 'L' or 'l' or LeftSide,
then lda must be at least max( 1, m ), otherwise lda must be at
least max( 1, n ).
Unchanged on exit.
b An array containing the matrix B.
FORTRAN
Page 4
_SYMM(3F) _SYMM(3F)
An array of dimension ( ldb, n ).
C
A pointer to an array of size ldb*n.
See note below about array storage convention for C.
Before entry, the array elements corresponding to the leading m
by n part of the matrix B must contain the matrix B.
Unchanged on exit.
ldb On entry, ldb specifies the first dimension of b as declared in
the calling (sub)program. ldb must be at least max( 1, m ).
Unchanged on exit.
beta On entry, beta specifies the scalar beta. When beta is supplied
as zero then c need not be set on input.
Unchanged on exit.
c An array containing the matrix C.
FORTRAN
An array of dimension ( ldc, n ).
C
A pointer to an array of size ldc*n.
See note below about array storage convention for C.
Before entry, the elements corresponding to the leading m by n
part of the matrix 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 On entry, ldc specifies the first dimension of c as declared in
the calling (sub) program. ldc must be at least max( 1, m ).
Unchanged on exit.
C ARRAY STORAGE CONVENTION
The matrices are assumed to be stored in a one dimensional C array
in an analogous fashion as a Fortran array (column major). Therefore,
the element A(i+1,j) of matrix A is stored immediately after the
element A(i,j), while A(i,j+1) is lda elements apart from A(i,j).
The element A(i,j) of the matrix can be accessed directly by reference
to a[ (j-1)*lda + (i-1) ].
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
Page 5
_SYMM(3F) _SYMM(3F)
Optimized and parallelized for SGI R3000, R4x00 and R8000 platforms.
PPPPaaaaggggeeee 6666 [ Back ]
|