comparison libcruft/lapack/zlacon.f @ 3333:15cddaacbc2d

[project @ 1999-11-03 19:53:59 by jwe]
author jwe
date Wed, 03 Nov 1999 19:54:52 +0000
parents 30c606bec7a8
children 68db500cb558
comparison
equal deleted inserted replaced
3332:7c03933635c6 3333:15cddaacbc2d
1 SUBROUTINE ZLACON( N, V, X, EST, KASE ) 1 SUBROUTINE ZLACON( N, V, X, EST, KASE )
2 * 2 *
3 * -- LAPACK auxiliary routine (version 2.0) -- 3 * -- LAPACK auxiliary routine (version 3.0) --
4 * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., 4 * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
5 * Courant Institute, Argonne National Lab, and Rice University 5 * Courant Institute, Argonne National Lab, and Rice University
6 * October 31, 1992 6 * June 30, 1999
7 * 7 *
8 * .. Scalar Arguments .. 8 * .. Scalar Arguments ..
9 INTEGER KASE, N 9 INTEGER KASE, N
10 DOUBLE PRECISION EST 10 DOUBLE PRECISION EST
11 * .. 11 * ..
52 * Originally named CONEST, dated March 16, 1988. 52 * Originally named CONEST, dated March 16, 1988.
53 * 53 *
54 * Reference: N.J. Higham, "FORTRAN codes for estimating the one-norm of 54 * Reference: N.J. Higham, "FORTRAN codes for estimating the one-norm of
55 * a real or complex matrix, with applications to condition estimation", 55 * a real or complex matrix, with applications to condition estimation",
56 * ACM Trans. Math. Soft., vol. 14, no. 4, pp. 381-396, December 1988. 56 * ACM Trans. Math. Soft., vol. 14, no. 4, pp. 381-396, December 1988.
57 *
58 * Last modified: April, 1999
57 * 59 *
58 * ===================================================================== 60 * =====================================================================
59 * 61 *
60 * .. Parameters .. 62 * .. Parameters ..
61 INTEGER ITMAX 63 INTEGER ITMAX
66 PARAMETER ( CZERO = ( 0.0D0, 0.0D0 ), 68 PARAMETER ( CZERO = ( 0.0D0, 0.0D0 ),
67 $ CONE = ( 1.0D0, 0.0D0 ) ) 69 $ CONE = ( 1.0D0, 0.0D0 ) )
68 * .. 70 * ..
69 * .. Local Scalars .. 71 * .. Local Scalars ..
70 INTEGER I, ITER, J, JLAST, JUMP 72 INTEGER I, ITER, J, JLAST, JUMP
71 DOUBLE PRECISION ALTSGN, ESTOLD, SAFMIN, TEMP 73 DOUBLE PRECISION ABSXI, ALTSGN, ESTOLD, SAFMIN, TEMP
72 * .. 74 * ..
73 * .. External Functions .. 75 * .. External Functions ..
74 INTEGER IZMAX1 76 INTEGER IZMAX1
75 DOUBLE PRECISION DLAMCH, DZSUM1 77 DOUBLE PRECISION DLAMCH, DZSUM1
76 EXTERNAL IZMAX1, DLAMCH, DZSUM1 78 EXTERNAL IZMAX1, DLAMCH, DZSUM1
77 * .. 79 * ..
78 * .. External Subroutines .. 80 * .. External Subroutines ..
79 EXTERNAL ZCOPY 81 EXTERNAL ZCOPY
80 * .. 82 * ..
81 * .. Intrinsic Functions .. 83 * .. Intrinsic Functions ..
82 INTRINSIC ABS, DBLE, DCMPLX 84 INTRINSIC ABS, DBLE, DCMPLX, DIMAG
83 * .. 85 * ..
84 * .. Save statement .. 86 * .. Save statement ..
85 SAVE 87 SAVE
86 * .. 88 * ..
87 * .. Executable Statements .. 89 * .. Executable Statements ..
109 GO TO 130 111 GO TO 130
110 END IF 112 END IF
111 EST = DZSUM1( N, X, 1 ) 113 EST = DZSUM1( N, X, 1 )
112 * 114 *
113 DO 30 I = 1, N 115 DO 30 I = 1, N
114 IF( ABS( X( I ) ).GT.SAFMIN ) THEN 116 ABSXI = ABS( X( I ) )
115 X( I ) = X( I ) / DCMPLX( ABS( X( I ) ) ) 117 IF( ABSXI.GT.SAFMIN ) THEN
118 X( I ) = DCMPLX( DBLE( X( I ) ) / ABSXI,
119 $ DIMAG( X( I ) ) / ABSXI )
116 ELSE 120 ELSE
117 X( I ) = CONE 121 X( I ) = CONE
118 END IF 122 END IF
119 30 CONTINUE 123 30 CONTINUE
120 KASE = 2 124 KASE = 2
150 * TEST FOR CYCLING. 154 * TEST FOR CYCLING.
151 IF( EST.LE.ESTOLD ) 155 IF( EST.LE.ESTOLD )
152 $ GO TO 100 156 $ GO TO 100
153 * 157 *
154 DO 80 I = 1, N 158 DO 80 I = 1, N
155 IF( ABS( X( I ) ).GT.SAFMIN ) THEN 159 ABSXI = ABS( X( I ) )
156 X( I ) = X( I ) / DCMPLX( ABS( X( I ) ) ) 160 IF( ABSXI.GT.SAFMIN ) THEN
161 X( I ) = DCMPLX( DBLE( X( I ) ) / ABSXI,
162 $ DIMAG( X( I ) ) / ABSXI )
157 ELSE 163 ELSE
158 X( I ) = CONE 164 X( I ) = CONE
159 END IF 165 END IF
160 80 CONTINUE 166 80 CONTINUE
161 KASE = 2 167 KASE = 2
166 * X HAS BEEN OVERWRITTEN BY ZTRANS(A)*X. 172 * X HAS BEEN OVERWRITTEN BY ZTRANS(A)*X.
167 * 173 *
168 90 CONTINUE 174 90 CONTINUE
169 JLAST = J 175 JLAST = J
170 J = IZMAX1( N, X, 1 ) 176 J = IZMAX1( N, X, 1 )
171 IF( ( DBLE( X( JLAST ) ).NE.ABS( DBLE( X( J ) ) ) ) .AND. 177 IF( ( ABS( X( JLAST ) ).NE.ABS( X( J ) ) ) .AND.
172 $ ( ITER.LT.ITMAX ) ) THEN 178 $ ( ITER.LT.ITMAX ) ) THEN
173 ITER = ITER + 1 179 ITER = ITER + 1
174 GO TO 50 180 GO TO 50
175 END IF 181 END IF
176 * 182 *