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 )
subroutine clatm6(TYPE, N, A, LDA, B, X, LDX, Y, LDY, ALPHA, BETA, WX, WY, S, DIF)
CLATM6
subroutine cgesvd(JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, RWORK, INFO)
CGESVD computes the singular value decomposition (SVD) for GE matrices
subroutine clakf2(M, N, A, LDA, B, D, E, Z, LDZ)
CLAKF2
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.