XLPack 7.0
XLPack Numerical Library (C API) Reference Manual
Loading...
Searching...
No Matches

◆ zupmtr()

void zupmtr ( char  side,
char  uplo,
char  trans,
int  m,
int  n,
doublecomplex  ap[],
doublecomplex  tau[],
int  ldc,
doublecomplex  c[],
doublecomplex  work[],
int *  info 
)

Multiplies by a transform matrix from a complex Hermitian matrix in packed form to tridiagonal form

Purpose
This routine overwrites the general real m x n matrix C with
side = 'L' side = 'R'
trans = 'N': Q * C C * Q
trans = 'T': Q^H * C C * Q^H
where Q is a complex unitary matrix of order nq, with nq = m if side = 'L' and nq = n if side = 'R'. Q is defined as the product of nq - 1 elementary reflectors, as returned by zhptrd:
If uplo = 'U', Q = H(nq-1) . . . H(2) H(1).
If uplo = 'L', Q = H(1) H(2) . . . H(nq-1).
Parameters
[in]side= 'L': Apply Q or Q^H from the Left.
= 'R': Apply Q or Q^H from the Right.
[in]uplo= 'U': Upper triangular packed storage used in previous call to zhptrd.
= 'L': Lower triangular packed storage used in previous call to zhptrd.
[in]trans= 'N': No transpose, apply Q.
= 'T': Transpose, apply Q^H.
[in]mNumber of rows of the matrix C. (m >= 0) (If m = 0, returns without computation)
[in]nNumber of columns of the matrix C. (n >= 0) (If n = 0, returns without computation)
[in]ap[]Array ap[lap] (lap >= m(m + 1)/2 if side = 'L', lap >= n(n + 1)/2 if side = 'R')
The vectors which define the elementary reflectors, as returned by zhptrd. ap[] is modified by the routine but restored on exit.
[in]tau[]Array tau[ltau] (ltau >= m - 1 if side = 'L', ltau >= n - 1 if side = 'R')
tau[i] must contain the scalar factor of the elementary reflector H(i), as returned by zhptrd.
[in]ldcLeading dimension of the two dimensional array c[][]. (ldc >= max(1, m))
[in,out]c[][]Array c[lc][ldc] (lc >= n)
[in] The m x n matrix C.
[out] C is overwritten by Q*C or Q^H*C or C*Q^H or C*Q.
[out]work[]Array work[lwork] (lwork >= n if side = 'L', lwork >= m if side = 'R')
Work array.
[out]info= 0: Successful exit.
= -1: The argument side had an illegal value. (side != 'L' nor 'R')
= -2: The argument uplo had an illegal value. (uplo != 'U' nor 'L')
= -3: The argument trans had an illegal value. (trans != 'N' nor 'T')
= -4: The argument m had an illegal value. (m < 0)
= -5: The argument n had an illegal value. (n < 0)
= -8: The argument ldc had an illegal value. (ldc < max(1, m))
Reference
LAPACK