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

◆ zupgtr()

void zupgtr ( char  uplo,
int  n,
doublecomplex  ap[],
doublecomplex  tau[],
int  ldq,
doublecomplex  q[],
doublecomplex  work[],
int *  info 
)

Generates a transform matrix from a complex Hermitian matrix in packed form to tridiagonal form

Purpose
This routine generates a complex unitary matrix Q which is defined as the product of n - 1 elementary reflectors H(i) of order n, as returned by zhptrd using packed storage.
If uplo = 'U', Q = H(n-1) . . . H(2) H(1).
If uplo = 'L', Q = H(1) H(2) . . . H(n-1).
Parameters
[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]nOrder of the matrix Q. (n >= 0) (If n = 0, returns without computation)
[in]ap[]Array ap[lap] (lap >= n(n + 1)/2)
The vectors which define the elementary reflectors, as returned by zhptrd.
[in]tau[]Array tau[ltau] (ltau >= n - 1)
tau[i] must contain the scalar factor of the elementary reflector H(i), as returned by zhptrd.
[in]ldqLeading dimension of the two dimensional array q[][]. (ldq >= max(1, n))
[out]q[][]Array q[lq][ldq] (lq >= n)
The n x n unitary matrix Q.
[out]work[]Array work[lwork] (lwork >= n - 1)
Work array.
[out]info= 0: Successful exit.
= -1: The argument uplo had an illegal value. (uplo != 'U' nor 'L')
= -2: The argument n had an illegal value. (n < 0)
= -5: The argument ldq had an illegal value. (ldq < max(1, n))
Reference
LAPACK