[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]

*AIX Version 4.3 Base Operating System and Extensions Technical Reference, Volume 2*

## SSYMM, DSYMM, CSYMM, or ZSYMM Subroutine

### Purpose

Performs matrix-matrix matrix operations on symmetric matrices.

### Library

BLAS Library (**libblas.a**)

### FORTRAN Syntax

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

**SUBROUTINE** **ZSYMM(***SIDE***, ***UPLO***, ***M*, *N***, ***ALPHA***,**
*A***, ***LDA***, ***B***, ***LDB***, ***BETA***, ***C***, ***LDC***)**
**CHARACTER*1** *SIDE***,***UPLO*
**INTEGER** *M***,***N***,***LDA***,***LDB***,***LDC*
**COMPLEX*16** *ALPHA***,***BETA*
**COMPLEX*16** *A***(***LDA***,*), ***B***(***LDB***,*), ***C***(***LDC***,*)**

### Description

The **SSYMM**, **DSYMM**, **CSYMM**, or **ZSYMM** subroutine 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* |
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* |
Unchanged on exit. |

*UPLO* |
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. |
Unchanged on exit. |

*M* |
On entry, *M* specifies the number of rows of the matrix *C*; *M* must be at least 0; unchanged on exit. |

*N* |
On entry, *N* specifies the number of columns of the matrix *C*; *N* must be at least 0; unchanged on exit. |

*ALPHA* |
On entry, *ALPHA* specifies the scalar alpha; unchanged on exit. |

*A* |
An array of dimension ( *LDA*, *KA* ), where *KA* is *M* when *SIDE* = 'L' or 'l' and is *N* otherwise; on 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. On 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; 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' then *LDA* must be at least max( 1, *M* ), otherwise *LDA* must be at least max( 1, *N* ); unchanged on exit. |

*B* |
An array of dimension ( *LDB*, *N* ); on entry, the leading *M* by *N* part of the array *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 0 then *C* need not be set on input; unchanged on exit. |

*C* |
An array of dimension ( *LDC*, *N* ); on entry, the leading *M* by *N* part of the array *C* must contain the matrix *C*, except when beta is 0, 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. |

[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]