90 SUBROUTINE zlatsy( UPLO, N, X, LDX, ISEED )
103 COMPLEX*16 x( ldx, * )
110 parameter( eye = ( 0.0d0, 1.0d0 ) )
114 DOUBLE PRECISION alpha, alpha3, beta
115 COMPLEX*16 a, b, c, r
128 alpha = ( 1.d0+sqrt( 17.d0 ) ) / 8.d0
129 beta = alpha - 1.d0 / 1000.d0
130 alpha3 = alpha*alpha*alpha
134 IF( uplo.EQ.
'U' )
THEN
147 a = alpha3*
zlarnd( 5, iseed )
148 b =
zlarnd( 5, iseed ) / alpha
155 x( i-1, i-1 ) =
zlarnd( 2, iseed )
156 x( i-3, i-3 ) =
zlarnd( 2, iseed )
157 x( i-4, i-4 ) =
zlarnd( 2, iseed )
158 IF( abs( x( i-3, i-3 ) ).GT.abs( x( i-4, i-4 ) ) )
THEN
159 x( i-4, i-3 ) = 2.0d0*x( i-3, i-3 )
161 x( i-4, i-3 ) = 2.0d0*x( i-4, i-4 )
169 a = alpha3*
zlarnd( 5, iseed )
170 b =
zlarnd( 5, iseed ) / alpha
177 x( i-1, i-1 ) =
zlarnd( 2, iseed )
181 x( i, i ) =
zlarnd( 2, iseed )
182 x( i-1, i-1 ) =
zlarnd( 2, iseed )
183 IF( abs( x( i, i ) ).GT.abs( x( i-1, i-1 ) ) )
THEN
184 x( i-1, i ) = 2.0d0*x( i, i )
186 x( i-1, i ) = 2.0d0*x( i-1, i-1 )
189 ELSE IF( i.EQ.1 )
THEN
190 x( i, i ) =
zlarnd( 2, iseed )
209 a = alpha3*
zlarnd( 5, iseed )
210 b =
zlarnd( 5, iseed ) / alpha
217 x( i+1, i+1 ) =
zlarnd( 2, iseed )
218 x( i+3, i+3 ) =
zlarnd( 2, iseed )
219 x( i+4, i+4 ) =
zlarnd( 2, iseed )
220 IF( abs( x( i+3, i+3 ) ).GT.abs( x( i+4, i+4 ) ) )
THEN
221 x( i+4, i+3 ) = 2.0d0*x( i+3, i+3 )
223 x( i+4, i+3 ) = 2.0d0*x( i+4, i+4 )
231 a = alpha3*
zlarnd( 5, iseed )
232 b =
zlarnd( 5, iseed ) / alpha
239 x( i+1, i+1 ) =
zlarnd( 2, iseed )
243 x( i, i ) =
zlarnd( 2, iseed )
244 x( i+1, i+1 ) =
zlarnd( 2, iseed )
245 IF( abs( x( i, i ) ).GT.abs( x( i+1, i+1 ) ) )
THEN
246 x( i+1, i ) = 2.0d0*x( i, i )
248 x( i+1, i ) = 2.0d0*x( i+1, i+1 )
251 ELSE IF( i.EQ.n )
THEN
252 x( i, i ) =
zlarnd( 2, iseed )