## MB01XY

### Computing U' U or L L', with U and L upper and lower triangular matrices (unblock algorithm)

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

Purpose

      To compute the matrix product U' * U or L * L', where U and L are
      upper and lower triangular matrices, respectively, stored in the
      corresponding upper or lower triangular part of the array A.

      If UPLO = 'U' then the upper triangle of the result is stored,
      overwriting the matrix U in A.
      If UPLO = 'L' then the lower triangle of the result is stored,
      overwriting the matrix L in A.

Specification

          SUBROUTINE MB01XY( UPLO, N, A, LDA, INFO )
    C     .. Scalar Arguments ..
          CHARACTER          UPLO
          INTEGER            INFO, LDA, N
    C     .. Array Arguments ..
          DOUBLE PRECISION   A( LDA, * )

Arguments

Mode Parameters

      UPLO    CHARACTER*1
              Specifies which triangle (U or L) is given in the array A,
              as follows:
              = 'U':  the upper triangular part U is given;
              = 'L':  the lower triangular part L is given.

Input/Output Parameters

      N       (input) INTEGER
              The order of the triangular matrices U or L.  N >= 0.

      A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
              On entry, if UPLO = 'U', the leading N-by-N upper
              triangular part of this array must contain the upper
              triangular matrix U.
              On entry, if UPLO = 'L', the leading N-by-N lower
              triangular part of this array must contain the lower
              triangular matrix L.
              On exit, if UPLO = 'U', the leading N-by-N upper
              triangular part of this array contains the upper
              triangular part of the product U' * U. The strictly lower
              triangular part is not referenced.
              On exit, if UPLO = 'L', the leading N-by-N lower
              triangular part of this array contains the lower
              triangular part of the product L * L'. The strictly upper
              triangular part is not referenced.

      LDA     INTEGER
              The leading dimension of array A.  LDA >= max(1,N).

Error Indicator

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

Method

      The matrix product U' * U or L * L' is computed using BLAS 2 and
      BLAS 1 operations (an unblocked algorithm).

Further Comments

      This routine is a counterpart of LAPACK Library routine DLAUU2,
      which computes the matrix product U * U' or L' * L.

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index