public interface laqr4
LAQR4 implements one level of recursion for CLAQR0.
It is a complete implementation of the small bulge multi-shift
QR algorithm. It may be called by CLAQR0 and, for large enough
deflation window size, it may be called by CLAQR3. This
subroutine is identical to CLAQR0 except that it calls CLAQR2
instead of CLAQR3.
LAQR4 computes the eigenvalues of a Hessenberg matrix H
and, optionally, the matrices T and Z from the Schur decomposition
H = Z T ZH, where T is an upper triangular matrix (the
Schur form), and Z is the unitary matrix of Schur vectors.
Optionally Z may be postmultiplied into an input unitary
matrix Q so that this routine can give the Schur factorization
of a matrix A which has been reduced to the Hessenberg form H
by the unitary matrix Q: A = QHQH = (QZ)H(QZ)**H.
Subroutines
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
logical(kind=lk),
|
intent(in) |
|
|
:: |
wantt |
|
|
logical(kind=lk),
|
intent(in) |
|
|
:: |
wantz |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ilo |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ihi |
|
|
complex(kind=sp),
|
intent(inout) |
|
|
:: |
h(ldh,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldh |
|
|
complex(kind=sp),
|
intent(out) |
|
|
:: |
w(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
iloz |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ihiz |
|
|
complex(kind=sp),
|
intent(inout) |
|
|
:: |
z(ldz,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldz |
|
|
complex(kind=sp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
lwork |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
logical(kind=lk),
|
intent(in) |
|
|
:: |
wantt |
|
|
logical(kind=lk),
|
intent(in) |
|
|
:: |
wantz |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ilo |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ihi |
|
|
real(kind=dp),
|
intent(inout) |
|
|
:: |
h(ldh,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldh |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
wr(*) |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
wi(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
iloz |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ihiz |
|
|
real(kind=dp),
|
intent(inout) |
|
|
:: |
z(ldz,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldz |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
lwork |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
logical(kind=lk),
|
intent(in) |
|
|
:: |
wantt |
|
|
logical(kind=lk),
|
intent(in) |
|
|
:: |
wantz |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ilo |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ihi |
|
|
real(kind=sp),
|
intent(inout) |
|
|
:: |
h(ldh,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldh |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
wr(*) |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
wi(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
iloz |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ihiz |
|
|
real(kind=sp),
|
intent(inout) |
|
|
:: |
z(ldz,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldz |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
lwork |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
logical(kind=lk),
|
intent(in) |
|
|
:: |
wantt |
|
|
logical(kind=lk),
|
intent(in) |
|
|
:: |
wantz |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ilo |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ihi |
|
|
complex(kind=dp),
|
intent(inout) |
|
|
:: |
h(ldh,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldh |
|
|
complex(kind=dp),
|
intent(out) |
|
|
:: |
w(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
iloz |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ihiz |
|
|
complex(kind=dp),
|
intent(inout) |
|
|
:: |
z(ldz,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldz |
|
|
complex(kind=dp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
lwork |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Module Procedures