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

◆ zunghr()

void zunghr ( int  n,
int  ilo,
int  ihi,
int  lda,
doublecomplex  a[],
doublecomplex  tau[],
doublecomplex  work[],
int  lwork,
int *  info 
)

Generates a complex transform matrix to Hessenberg form

Purpose
This routine generates a complex unitary matrix Q which is defined as the product of ihi-ilo elementary reflectors of order n, as returned by zgehrd.
Q = H(ilo) H(ilo+1) . . . H(ihi-1).
Parameters
[in]nOrder of the matrix A. (n >= 0) (If n = 0, returns without computation)
[in]ilo
[in]ihiilo and ihi must have the same values as in the previous call of zgehrd. Q is equal to the unit matrix except in the submatrix Q(ilo+1〜ihi, ilo+1〜ihi). (1 <= ilo <= ihi <= n, if n > 0. ilo = 1 and ihi = 0, if n = 0)
[in]ldaLeading dimension of the two dimensional array a[][]. (lda >= max(1, n))
[in,out]a[][]Array a[la][lda] (la >= n)
[in] The vectors which define the elementary reflectors, as returned by zgehrd.
[out] The n x n unitary matrix Q.
[in]tau[]Array tau[ltau] (ltau >= n - 1) tau[i] must contain the scalar factor of the elementary reflector H(i), as returned by zgehrd.
[out]work[]Array work[lwork]
Work array.
On exit, if info = 0, work[0] returns the optimal lwork.
[in]lworkThe dimension of the array work[]. (lwork >= ihi-ilo)
For optimum performance lwork >= (ihi-ilo)*nb, where nb is the optimal blocksize.
If lwork = -1, then a workspace query is assumed. The routine only calculates the optimal size of the work[] array, and returns the value in work[0].
[out]info= 0: Successful exit
= -1: The argument n had an illegal value (n < 0)
= -2: The argument ilo had an illegal value (ilo < 1 or ilo > n)
= -3: The argument ihi had an illegal value (ihi < min(ilo, n) or ihi > n)
= -4: The argument lda had an illegal value (lda < max(1, n))
= -8: The argument lwork had an illegal value (lwork too small)
Reference
LAPACK