zlaqr5 (l) - Linux Manuals
Command to display zlaqr5
manual in Linux: $ man l zlaqr5
NAME
SYNOPSIS
- SUBROUTINE ZLAQR5(
-
WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S,
H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV,
WV, LDWV, NH, WH, LDWH )
-
INTEGER
IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV,
LDWH, LDWV, LDZ, N, NH, NSHFTS, NV
-
LOGICAL
WANTT, WANTZ
-
COMPLEX*16
H( LDH, * ), S( * ), U( LDU, * ), V( LDV, * ),
WH( LDWH, * ), 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
ALPHA, BETA, CDUM, REFSUM
-
DOUBLE
PRECISION H11, H12, H21, H22, SAFMAX, SAFMIN, SCL,
SMLNUM, TST1, TST2, ULP
-
INTEGER
I2, I4, INCOL, J, J2, J4, JBOT, JCOL, JLEN,
JROW, JTOP, K, K1, KDU, KMS, KNZ, KRCOL, KZS,
M, M22, MBOT, MEND, MSTART, MTOP, NBMPS, NDCOL,
NS, NU
-
LOGICAL
ACCUM, BLK22, BMP22
-
DOUBLE
PRECISION DLAMCH
-
EXTERNAL
DLAMCH
-
INTRINSIC
ABS, DBLE, DCONJG, DIMAG, MAX, MIN, MOD
-
COMPLEX*16
VT( 3 )
-
EXTERNAL
DLABAD, ZGEMM, ZLACPY, ZLAQR1, ZLARFG, ZLASET,
ZTRMM
-
DOUBLE
PRECISION CABS1
-
CABS1(
CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
-
IF(
NSHFTS.LT.2 )
RETURN
-
IF(
KTOP.GE.KBOT )
RETURN
-
NS
= NSHFTS - MOD( NSHFTS, 2 )
-
SAFMIN
= DLAMCH( aqSAFE MINIMUMaq )
-
SAFMAX
= RONE / SAFMIN
-
CALL
DLABAD( SAFMIN, SAFMAX )
-
ULP
= DLAMCH( aqPRECISIONaq )
-
SMLNUM
= SAFMIN*( DBLE( N ) / ULP )
-
ACCUM
= ( KACC22.EQ.1 ) .OR. ( KACC22.EQ.2 )
-
BLK22
= ( NS.GT.2 ) .AND. ( KACC22.EQ.2 )
-
IF(
KTOP+2.LE.KBOT )
H( KTOP+2, KTOP ) = ZERO
-
NBMPS
= NS / 2
-
KDU
= 6*NBMPS - 3
-
DO
210 INCOL = 3*( 1-NBMPS ) + KTOP - 1, KBOT - 2, 3*NBMPS - 2
-
NDCOL
= INCOL + KDU
-
IF(
ACCUM )
CALL ZLASET( aqALLaq, KDU, KDU, ZERO, ONE, U, LDU )
-
DO
140 KRCOL = INCOL, MIN( INCOL+3*NBMPS-3, KBOT-2 )
-
MTOP
= MAX( 1, ( ( KTOP-1 )-KRCOL+2 ) / 3+1 )
-
MBOT
= MIN( NBMPS, ( KBOT-KRCOL ) / 3 )
-
M22
= MBOT + 1
-
BMP22
= ( MBOT.LT.NBMPS ) .AND. ( KRCOL+3*( M22-1 ) ).EQ.
( KBOT-2 )
-
DO
10 M = MTOP, MBOT
-
K
= KRCOL + 3*( M-1 )
-
IF(
K.EQ.KTOP-1 ) THEN
-
CALL
ZLAQR1( 3, H( KTOP, KTOP ), LDH, S( 2*M-1 ),
S( 2*M ), V( 1, M ) )
-
ALPHA
= V( 1, M )
-
CALL
ZLARFG( 3, ALPHA, V( 2, M ), 1, V( 1, M ) )
-
ELSE
-
BETA
= H( K+1, K )
-
V(
2, M ) = H( K+2, K )
-
V(
3, M ) = H( K+3, K )
-
CALL
ZLARFG( 3, BETA, V( 2, M ), 1, V( 1, M ) )