130 SUBROUTINE zlacn2( N, V, X, EST, KASE, ISAVE )
142 COMPLEX*16 V( * ), X( * )
149 parameter( itmax = 5 )
150 DOUBLE PRECISION ONE, TWO
151 parameter( one = 1.0d0, two = 2.0d0 )
152 COMPLEX*16 CZERO, CONE
153 parameter( czero = ( 0.0d0, 0.0d0 ),
154 $ cone = ( 1.0d0, 0.0d0 ) )
158 DOUBLE PRECISION ABSXI, ALTSGN, ESTOLD, SAFMIN, TEMP
162 DOUBLE PRECISION DLAMCH, DZSUM1
163 EXTERNAL izmax1, dlamch, dzsum1
169 INTRINSIC abs, dble, dcmplx, dimag
173 safmin = dlamch(
'Safe minimum' )
176 x( i ) = dcmplx( one / dble( n ) )
183 GO TO ( 20, 40, 70, 90, 120 )isave( 1 )
195 est = dzsum1( n, x, 1 )
198 absxi = abs( x( i ) )
199 IF( absxi.GT.safmin )
THEN
200 x( i ) = dcmplx( dble( x( i ) ) / absxi,
201 $ dimag( x( i ) ) / absxi )
214 isave( 2 ) = izmax1( n, x, 1 )
223 x( isave( 2 ) ) = cone
232 CALL zcopy( n, x, 1, v, 1 )
234 est = dzsum1( n, v, 1 )
241 absxi = abs( x( i ) )
242 IF( absxi.GT.safmin )
THEN
243 x( i ) = dcmplx( dble( x( i ) ) / absxi,
244 $ dimag( x( i ) ) / absxi )
258 isave( 2 ) = izmax1( n, x, 1 )
259 IF( ( abs( x( jlast ) ).NE.abs( x( isave( 2 ) ) ) ) .AND.
260 $ ( isave( 3 ).LT.itmax ) )
THEN
261 isave( 3 ) = isave( 3 ) + 1
270 x( i ) = dcmplx( altsgn*( one+dble( i-1 ) / dble( n-1 ) ) )
281 temp = two*( dzsum1( n, x, 1 ) / dble( 3*n ) )
282 IF( temp.GT.est )
THEN
283 CALL zcopy( n, x, 1, v, 1 )
subroutine zlacn2(n, v, x, est, kase, isave)
ZLACN2 estimates the 1-norm of a square matrix, using reverse communication for evaluating matrix-vec...