172 SUBROUTINE clatm6( TYPE, N, A, LDA, B, X, LDX, Y, LDY, ALPHA,
173 $ BETA, WX, WY, S, DIF )
180 INTEGER LDA, LDX, LDY, N, TYPE
181 COMPLEX ALPHA, BETA, WX, WY
184 REAL DIF( * ), S( * )
185 COMPLEX A( LDA, * ), B( LDA, * ), X( LDX, * ),
192 REAL RONE, TWO, THREE
193 parameter( rone = 1.0e+0, two = 2.0e+0, three = 3.0e+0 )
195 parameter( zero = ( 0.0e+0, 0.0e+0 ),
196 $ one = ( 1.0e+0, 0.0e+0 ) )
203 COMPLEX WORK( 26 ), Z( 8, 8 )
206 INTRINSIC cabs, cmplx, conjg, real, sqrt
220 a( i, i ) = cmplx( i ) + alpha
230 a( 1, 1 ) = cmplx( rone, rone )
231 a( 2, 2 ) = conjg( a( 1, 1 ) )
233 a( 4, 4 ) = cmplx( real( one+alpha ), real( one+beta ) )
234 a( 5, 5 ) = conjg( a( 4, 4 ) )
239 CALL clacpy(
'F', n, n, b, lda, y, ldy )
240 y( 3, 1 ) = -conjg( wy )
241 y( 4, 1 ) = conjg( wy )
242 y( 5, 1 ) = -conjg( wy )
243 y( 3, 2 ) = -conjg( wy )
244 y( 4, 2 ) = conjg( wy )
245 y( 5, 2 ) = -conjg( wy )
247 CALL clacpy(
'F', n, n, b, lda, x, ldx )
263 a( 1, 3 ) = wx*a( 1, 1 ) + wy*a( 3, 3 )
264 a( 2, 3 ) = -wx*a( 2, 2 ) + wy*a( 3, 3 )
265 a( 1, 4 ) = wx*a( 1, 1 ) - wy*a( 4, 4 )
266 a( 2, 4 ) = wx*a( 2, 2 ) - wy*a( 4, 4 )
267 a( 1, 5 ) = -wx*a( 1, 1 ) + wy*a( 5, 5 )
268 a( 2, 5 ) = wx*a( 2, 2 ) + wy*a( 5, 5 )
272 s( 1 ) = rone / sqrt( ( rone+three*cabs( wy )*cabs( wy ) ) /
273 $ ( rone+cabs( a( 1, 1 ) )*cabs( a( 1, 1 ) ) ) )
274 s( 2 ) = rone / sqrt( ( rone+three*cabs( wy )*cabs( wy ) ) /
275 $ ( rone+cabs( a( 2, 2 ) )*cabs( a( 2, 2 ) ) ) )
276 s( 3 ) = rone / sqrt( ( rone+two*cabs( wx )*cabs( wx ) ) /
277 $ ( rone+cabs( a( 3, 3 ) )*cabs( a( 3, 3 ) ) ) )
278 s( 4 ) = rone / sqrt( ( rone+two*cabs( wx )*cabs( wx ) ) /
279 $ ( rone+cabs( a( 4, 4 ) )*cabs( a( 4, 4 ) ) ) )
280 s( 5 ) = rone / sqrt( ( rone+two*cabs( wx )*cabs( wx ) ) /
281 $ ( rone+cabs( a( 5, 5 ) )*cabs( a( 5, 5 ) ) ) )
283 CALL clakf2( 1, 4, a, lda, a( 2, 2 ), b, b( 2, 2 ), z, 8 )
284 CALL cgesvd(
'N',
'N', 8, 8, z, 8, rwork, work, 1, work( 2 ), 1,
285 $ work( 3 ), 24, rwork( 9 ), info )
286 dif( 1 ) = rwork( 8 )
288 CALL clakf2( 4, 1, a, lda, a( 5, 5 ), b, b( 5, 5 ), z, 8 )
289 CALL cgesvd(
'N',
'N', 8, 8, z, 8, rwork, work, 1, work( 2 ), 1,
290 $ work( 3 ), 24, rwork( 9 ), info )
291 dif( 5 ) = rwork( 8 )
subroutine clakf2(m, n, a, lda, b, d, e, z, ldz)
CLAKF2
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 clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.