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
NoneProgram Data
NoneProgram Results
None