174 SUBROUTINE clatm6( TYPE, N, A, LDA, B, X, LDX, Y, LDY, ALPHA,
175 $ beta, wx, wy, s, dif )
183 INTEGER lda, ldx, ldy, n, type
184 COMPLEX alpha, beta, wx, wy
187 REAL dif( * ), s( * )
188 COMPLEX a( lda, * ), b( lda, * ), x( ldx, * ),
195 REAL rone, two, three
196 parameter( rone = 1.0e+0, two = 2.0e+0, three = 3.0e+0 )
198 parameter( zero = ( 0.0e+0, 0.0e+0 ),
199 $ one = ( 1.0e+0, 0.0e+0 ) )
206 COMPLEX work( 26 ), z( 8, 8 )
209 INTRINSIC cabs, cmplx, conjg,
REAL, sqrt
223 a( i, i ) = cmplx( i ) + alpha
233 a( 1, 1 ) = cmplx( rone, rone )
234 a( 2, 2 ) = conjg( a( 1, 1 ) )
236 a( 4, 4 ) = cmplx(
REAL( ONE+ALPHA ),
REAL( ONE+BETA ) )
237 a( 5, 5 ) = conjg( a( 4, 4 ) )
242 CALL
clacpy(
'F', n, n, b, lda, y, ldy )
243 y( 3, 1 ) = -conjg( wy )
244 y( 4, 1 ) = conjg( wy )
245 y( 5, 1 ) = -conjg( wy )
246 y( 3, 2 ) = -conjg( wy )
247 y( 4, 2 ) = conjg( wy )
248 y( 5, 2 ) = -conjg( wy )
250 CALL
clacpy(
'F', n, n, b, lda, x, ldx )
266 a( 1, 3 ) = wx*a( 1, 1 ) + wy*a( 3, 3 )
267 a( 2, 3 ) = -wx*a( 2, 2 ) + wy*a( 3, 3 )
268 a( 1, 4 ) = wx*a( 1, 1 ) - wy*a( 4, 4 )
269 a( 2, 4 ) = wx*a( 2, 2 ) - wy*a( 4, 4 )
270 a( 1, 5 ) = -wx*a( 1, 1 ) + wy*a( 5, 5 )
271 a( 2, 5 ) = wx*a( 2, 2 ) + wy*a( 5, 5 )
275 s( 1 ) = rone / sqrt( ( rone+three*cabs( wy )*cabs( wy ) ) /
276 $ ( rone+cabs( a( 1, 1 ) )*cabs( a( 1, 1 ) ) ) )
277 s( 2 ) = rone / sqrt( ( rone+three*cabs( wy )*cabs( wy ) ) /
278 $ ( rone+cabs( a( 2, 2 ) )*cabs( a( 2, 2 ) ) ) )
279 s( 3 ) = rone / sqrt( ( rone+two*cabs( wx )*cabs( wx ) ) /
280 $ ( rone+cabs( a( 3, 3 ) )*cabs( a( 3, 3 ) ) ) )
281 s( 4 ) = rone / sqrt( ( rone+two*cabs( wx )*cabs( wx ) ) /
282 $ ( rone+cabs( a( 4, 4 ) )*cabs( a( 4, 4 ) ) ) )
283 s( 5 ) = rone / sqrt( ( rone+two*cabs( wx )*cabs( wx ) ) /
284 $ ( rone+cabs( a( 5, 5 ) )*cabs( a( 5, 5 ) ) ) )
286 CALL
clakf2( 1, 4, a, lda, a( 2, 2 ), b, b( 2, 2 ), z, 8 )
287 CALL
cgesvd(
'N',
'N', 8, 8, z, 8, rwork, work, 1, work( 2 ), 1,
288 $ work( 3 ), 24, rwork( 9 ), info )
289 dif( 1 ) = rwork( 8 )
291 CALL
clakf2( 4, 1, a, lda, a( 5, 5 ), b, b( 5, 5 ), z, 8 )
292 CALL
cgesvd(
'N',
'N', 8, 8, z, 8, rwork, work, 1, work( 2 ), 1,
293 $ work( 3 ), 24, rwork( 9 ), info )
294 dif( 5 ) = rwork( 8 )