zlaqr3 (l) - Linux Manuals
Command to display zlaqr3
manual in Linux: $ man l zlaqr3
NAME
SYNOPSIS
- SUBROUTINE ZLAQR3(
-
WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ,
IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT,
NV, WV, LDWV, WORK, LWORK )
-
INTEGER
IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV,
LDZ, LWORK, N, ND, NH, NS, NV, NW
-
LOGICAL
WANTT, WANTZ
-
COMPLEX*16
H( LDH, * ), SH( * ), T( LDT, * ), V( LDV, * ),
WORK( * ), WV( LDWV, * ), Z( LDZ, * )
-
COMPLEX*16
ZERO, ONE
-
PARAMETER
( ZERO = ( 0.0d0, 0.0d0 ),
ONE = ( 1.0d0, 0.0d0 ) )
-
DOUBLE
PRECISION RZERO, RONE
-
PARAMETER
( RZERO = 0.0d0, RONE = 1.0d0 )
-
COMPLEX*16
BETA, CDUM, S, TAU
-
DOUBLE
PRECISION FOO, SAFMAX, SAFMIN, SMLNUM, ULP
-
INTEGER
I, IFST, ILST, INFO, INFQR, J, JW, KCOL, KLN,
KNT, KROW, KWTOP, LTOP, LWK1, LWK2, LWK3,
LWKOPT, NMIN
-
DOUBLE
PRECISION DLAMCH
-
INTEGER
ILAENV
-
EXTERNAL
DLAMCH, ILAENV
-
EXTERNAL
DLABAD, ZCOPY, ZGEHRD, ZGEMM, ZLACPY, ZLAHQR,
ZLAQR4, ZLARF, ZLARFG, ZLASET, ZTREXC, ZUNMHR
-
INTRINSIC
ABS, DBLE, DCMPLX, DCONJG, DIMAG, INT, MAX, MIN
-
DOUBLE
PRECISION CABS1
-
CABS1(
CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
-
JW
= MIN( NW, KBOT-KTOP+1 )
-
IF(
JW.LE.2 ) THEN
-
LWKOPT
= 1
-
ELSE
-
CALL
ZGEHRD( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO )
-
LWK1
= INT( WORK( 1 ) )
-
CALL
ZUNMHR( aqRaq, aqNaq, JW, JW, 1, JW-1, T, LDT, WORK, V, LDV,
WORK, -1, INFO )
-
LWK2
= INT( WORK( 1 ) )
-
CALL
ZLAQR4( .true., .true., JW, 1, JW, T, LDT, SH, 1, JW, V,
LDV, WORK, -1, INFQR )
-
LWK3
= INT( WORK( 1 ) )
-
LWKOPT
= MAX( JW+MAX( LWK1, LWK2 ), LWK3 )
-
END
IF
-
IF(
LWORK.EQ.-1 ) THEN
-
WORK(
1 ) = DCMPLX( LWKOPT, 0 )
-
RETURN
-
END
IF
-
NS
= 0
-
ND
= 0
-
WORK(
1 ) = ONE
-
IF(
KTOP.GT.KBOT )
RETURN
-
IF(
NW.LT.1 )
RETURN
-
SAFMIN
= DLAMCH( aqSAFE MINIMUMaq )
-
SAFMAX
= RONE / SAFMIN
-
CALL
DLABAD( SAFMIN, SAFMAX )
-
ULP
= DLAMCH( aqPRECISIONaq )
-
SMLNUM
= SAFMIN*( DBLE( N ) / ULP )
-
JW
= MIN( NW, KBOT-KTOP+1 )
-
KWTOP
= KBOT - JW + 1
-
IF(
KWTOP.EQ.KTOP ) THEN
-
S
= ZERO
-
ELSE
-
S
= H( KWTOP, KWTOP-1 )
-
END
IF