###
Computation of matrix expression alpha A X trans(A), X symmetric (BLAS 2 version)

**[Specification]**
**[Arguments]**
**[Method]**
**[References]**
**[Comments]**
**[Example]**
**Purpose**

To compute the transformation of the symmetric matrix A by the
matrix Z in the form
A := op(Z)*A*op(Z)',
where op(Z) is either Z or its transpose, Z'.

**Specification**
SUBROUTINE MB01RW( UPLO, TRANS, M, N, A, LDA, Z, LDZ, DWORK,
$ INFO )
C .. Scalar Arguments ..
CHARACTER TRANS, UPLO
INTEGER INFO, LDA, LDZ, M, N
C .. Array Arguments ..
DOUBLE PRECISION A(LDA,*), DWORK(*), Z(LDZ,*)

**Arguments**
**Mode Parameters**

UPLO CHARACTER*1
Specifies whether the upper or lower triangle of A
is stored:
= 'U': Upper triangle of A is stored;
= 'L': Lower triangle of A is stored.
TRANS CHARACTER*1
Specifies whether op(Z) is Z or its transpose Z':
= 'N': op(Z) = Z;
= 'T': op(Z) = Z'.

**Input/Output Parameters**
M (input) INTEGER
The order of the resulting symmetric matrix op(Z)*A*op(Z)'
and the number of rows of the matrix Z, if TRANS = 'N',
or the number of columns of the matrix Z, if TRANS = 'T'.
M >= 0.
N (input) INTEGER
The order of the symmetric matrix A and the number of
columns of the matrix Z, if TRANS = 'N', or the number of
rows of the matrix Z, if TRANS = 'T'. N >= 0.
A (input/output) DOUBLE PRECISION array, dimension
(LDA,MAX(M,N))
On entry, the leading N-by-N upper or lower triangular
part of this array must contain the upper (UPLO = 'U')
or lower (UPLO = 'L') triangular part of the symmetric
matrix A.
On exit, the leading M-by-M upper or lower triangular
part of this array contains the upper (UPLO = 'U') or
lower (UPLO = 'L') triangular part of the symmetric
matrix op(Z)*A*op(Z)'.
LDA INTEGER
The leading dimension of the array A. LDA >= MAX(1,M,N).
Z (input) DOUBLE PRECISION array, dimension (LDQ,K)
where K = N if TRANS = 'N' and K = M if TRANS = 'T'.
The leading M-by-N part, if TRANS = 'N', or N-by-M part,
if TRANS = 'T', of this array contains the matrix Z.
LDZ INTEGER
The leading dimension of the array Z.
LDZ >= MAX(1,M) if TRANS = 'N' and
LDZ >= MAX(1,N) if TRANS = 'T'.

**Workspace**
DWORK DOUBLE PRECISION array, dimension (N)

**Error Indicator**
INFO INTEGER
= 0: successful exit;
< 0: if INFO = -i, the i-th argument had an illegal
value.

**Further Comments**
This is a simpler, BLAS 2 version for MB01RD.

**Example**
**Program Text**

None

**Program Data**
None

**Program Results**
None

**Return to Supporting Routines index**