symm(3F)

dsymm, ssymm, zsymm, csymm - BLAS level three Symmetric Matrix Product

As shipped in IRIX 6.5. First release of IRIX 6.5.

NAME
     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,*)


C SYNOPSIS
     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];

     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];



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


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

     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.

             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
             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) ].


AUTHORS
          Jack Dongarra, Argonne National Laboratory.
          Iain Duff, AERE Harwell.
          Jeremy Du Croz, Numerical Algorithms Group Ltd.
          Sven Hammarling, Numerical Algorithms Group Ltd.

TUNING
          Optimized and parallelized for SGI R3000, R4x00 and R8000 platforms.