181 SUBROUTINE cckcsd( NM, MVAL, PVAL, QVAL, NMATS, ISEED, THRESH,
182 $ MMAX, X, XF, U1, U2, V1T, V2T, THETA, IWORK,
183 $ WORK, RWORK, NIN, NOUT, INFO )
190 INTEGER INFO, NIN, NM, NMATS, MMAX, NOUT
194 INTEGER ISEED( 4 ), IWORK( * ), MVAL( * ), PVAL( * ),
196 REAL RWORK( * ), THETA( * )
197 COMPLEX U1( * ), U2( * ), ( * ), V2T( * ),
198 $ work( * ), x( * ), xf( * )
205 PARAMETER ( NTESTS = 15 )
207 parameter( ntypes = 4 )
208 REAL GAPDIGIT, ORTH, REALONE
210 $ realone = 1.0e0, realzero = 0.0e0,
213 PARAMETER ( ONE = (1.0e0,0.0e0), zero = (0.0e0,0.0e0) )
215 PARAMETER ( piover2 = 1.57079632679489661923132169163975144210e0 )
220 INTEGER I, , IM, IMAT, J, LDU1, LDU2, LDV1T,
221 $ ldv2t, ldx, lwork, m, nfail, nrun, nt, p, q, r
224 LOGICAL DOTYPE( NTYPES )
225 REAL RESULT( NTESTS )
236 EXTERNAL SLARAN, SLARND
247 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
262 DO 20 imat = 1, ntypes
266 IF( .NOT.dotype( imat ) )
273 IF( m .NE. 0 .AND. iinfo .NE. 0 )
THEN
274 WRITE( nout, fmt = 9999 ) m, iinfo
278 ELSE IF( imat.EQ.2 )
THEN
279 r =
min( p, m-p, q, m-q )
281 theta(i) = piover2 * slarnd( 1, iseed )
283 CALL clacsg( m, p, q, theta, iseed, x, ldx, work )
286 x(i+(j-1)*ldx) = x(i+(j-1)*ldx) +
287 $ orth*slarnd(2,iseed)
290 ELSE IF( imat.EQ.3 )
THEN
291 r =
min( p, m-p, q, m-q )
293 theta(i) = ten**(-slarnd(1,iseed)*gapdigit)
296 theta(i) = theta(i-1) + theta(i)
299 theta(i) = piover2 * theta(i) / theta(r+1)
301 CALL clacsg( m, p, q, theta, iseed, x, ldx, work )
303 CALL claset(
'F', m, m, zero, one, x, ldx )
305 j = int( slaran( iseed ) * m ) + 1
307 CALL csrot( m, x(1+(i-1)*ldx), 1, x(1+(j-1)*ldx),
308 $ 1, realzero, realone )
315 CALL ccsdts( m, p, q, x, xf, ldx, u1, ldu1, u2, ldu2, v1t,
316 $ ldv1t, v2t, ldv2t, theta, iwork, work, lwork,
323 IF( result( i ).GE.thresh )
THEN
324 IF( nfail.EQ.0 .AND. firstt )
THEN
328 WRITE( nout, fmt = 9998 )m, p, q, imat, i,
339 CALL alasum( path, nout, nfail, nrun, 0 )
341 9999
FORMAT(
' CLAROR in CCKCSD: M = ', i5,
', INFO = ', i15 )
342 9998
FORMAT(
' M=', i4,
' P=', i4,
', Q=', i4,
', type ', i2,
343 $
', test ', i2,
', ratio=', g13.6 )
subroutine cckcsd(nm, mval, pval, qval, nmats, iseed, thresh, mmax, x, xf, u1, u2, v1t, v2t, theta, iwork, work, rwork, nin, nout, info)
CCKCSD
subroutine ccsdts(m, p, q, x, xf, ldx, u1, ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, theta, iwork, work, lwork, rwork, result)
CCSDTS