## MB01RW

### 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