# ?lauu2

Computes the product `U*UT`(`U*UH`) or `LT*L` (`LH*L`), where U and L are upper or lower triangular matrices (unblocked algorithm).

## Syntax

call slauu2( uplo, n, a, lda, info )

call dlauu2( uplo, n, a, lda, info )

call clauu2( uplo, n, a, lda, info )

call zlauu2( uplo, n, a, lda, info )

## Description

The routine ?lauu2 computes the product `U*UT` or `LT*L` for real flavors, and `LH*L` or`LH*L` for complex flavors. Here the triangular factor U or L is stored in the upper or lower triangular part of the array a.

If `uplo = 'U'` or 'u' , then the upper triangle of the result is stored, overwriting the factor U in A.

If `uplo = 'L'` or 'l', then the lower triangle of the result is stored, overwriting the factor L in A.

This is the unblocked form of the algorithm, calling BLAS Level 2 Routines.

## Input Parameters

uplo

  CHARACTER*1.

  Specifies whether the triangular factor stored in the array a is upper or lower triangular:

  = 'U': Upper triangular

  = 'L': Lower triangular

n

  INTEGER. The order of the triangular factor U or L. `n ≥ 0`.

a

  REAL for slauu2

  DOUBLE PRECISION for dlauu2

  COMPLEX for clauu2

  COMPLEX*16 for zlauu2.

  Array, DIMENSION (lda, n). On entry, the triangular factor U or L.

lda

  INTEGER. The leading dimension of the array a. `lda ≥ max(1,n)`.

## Output Parameters

a

  On exit,

  if `uplo = 'U'`, then the upper triangle of a is overwritten with the upper triangle of the product `U*UT`(`U*UH`);

  if `uplo = 'L'`, then the lower triangle of a is overwritten with the lower triangle of the product `LT*L` (`LH*L`).

info

  INTEGER.

  = 0: successful exit

  < 0: if `info = -k`, the k-th argument had an illegal value

Parent topic: Auxiliary Routines