1 SUBROUTINE zdrvls( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB,
2 $ ibval, nbval, nxval, thresh, tsterr, a, copya,
3 $ b, copyb, c, s, copys, work, rwork, iwork,
14 INTEGER nm, nn, nnb, nns, nout
15 DOUBLE PRECISION thresh
19 INTEGER iwork( * ), mval( * ), nbval( * ), nsval( * ),
20 $ ibval( * ), nval( * ), nxval( * )
21 DOUBLE PRECISION copys( * ), rwork( * ), s( * )
22 COMPLEX*16 a( * ), b( * ), c( * ), copya( * ), copyb( * ),
123 parameter( ntests = 18 )
125 parameter( smlsiz = 25 )
126 DOUBLE PRECISION one, zero
127 parameter( one = 1.0d+0, zero = 0.0d+0 )
128 COMPLEX*16 cone, czero
129 parameter( cone = ( 1.0d+0, 0.0d+0 ),
130 $ czero = ( 0.0d+0, 0.0d+0 ) )
135 INTEGER crank, i, im, in, inb, info, ins, irank,
136 $ iscale, itran,
itype, j, k, lda, ldb, ldwork,
137 $ lwlsy, lwork, m, mnmin, n, nb, ncols, nerrs,
138 $ nfail, nrhs, nrows, nrun, rank, ib,
141 DOUBLE PRECISION eps, norma, normb, rcond
144 INTEGER iseed( 4 ), iseedy( 4 )
145 DOUBLE PRECISION result( ntests )
153 $ zdscal,
zerrls, zgels, zgelsd, zgelss, zgelsx,
158 INTRINSIC dble,
max,
min, sqrt
163 INTEGER infot, iounit
166 common / infoc / infot, iounit, ok, lerr
167 common / srnamc / srnamt
170 DATA iseedy / 1988, 1989, 1990, 1991 /
176 path( 1: 1 ) =
'Zomplex precision'
182 iseed( i ) = iseedy( i )
184 eps = dlamch(
'Epsilon' )
188 rcond = sqrt( eps ) - ( sqrt( eps )-eps ) / 2
194 $ CALL
zerrls( path, nout )
198 IF( ( nm.EQ.0 .OR. nn.EQ.0 ) .AND. thresh.EQ.zero )
199 $ CALL
alahd( nout, path )
213 lwork =
max( 1, ( m+nrhs )*( n+2 ), ( n+nrhs )*( m+2 ),
214 $ m*n+4*mnmin+
max( m, n ), 2*n+m )
218 itype = ( irank-1 )*3 + iscale
219 IF( .NOT.dotype(
itype ) )
222 IF( irank.EQ.1 )
THEN
228 CALL
zqrt13( iscale, m, n, copya, lda, norma,
234 CALL
xlaenv( 3, nxval( inb ) )
235 IF ( (
max(m, n) / 25) .GT. nb )
THEN
249 IF( itran.EQ.1 )
THEN
251 plasma_trans = plasmanotrans
256 plasma_trans = plasmaconjtrans
260 ldwork =
max( 1, ncols )
264 IF( ncols.GT.0 )
THEN
265 CALL zlarnv( 2, iseed, ncols*nrhs,
267 CALL zdscal( ncols*nrhs,
268 $ one / dble( ncols ), work,
271 CALL zgemm(
trans,
'No transpose', nrows,
272 $ nrhs, ncols, cone, copya, lda,
273 $ work, ldwork, czero, b, ldb )
274 CALL zlacpy(
'Full', nrows, nrhs, b, ldb,
279 IF( m.GT.0 .AND. n.GT.0 )
THEN
280 CALL zlacpy(
'Full', m, n, copya, lda,
282 CALL zlacpy(
'Full', nrows, nrhs,
283 $ copyb, ldb, b, ldb )
288 $ a, lda, ht, b, ldb,
292 $ CALL
alaerh( path,
'ZGELS ', info, 0,
293 $
trans, m, n, nrhs, -1, nb,
294 $
itype, nfail, nerrs,
299 ldwork =
max( 1, nrows )
300 IF( nrows.GT.0 .AND. nrhs.GT.0 )
301 $ CALL zlacpy(
'Full', nrows, nrhs,
302 $ copyb, ldb, c, ldb )
304 $ lda, b, ldb, c, ldb, rwork,
307 IF( ( itran.EQ.1 .AND. m.GE.n ) .OR.
308 $ ( itran.EQ.2 .AND. m.LT.n ) )
THEN
313 $ nrhs, copya, lda, b, ldb,
314 $ copyb, ldb, c, work,
321 $ nrhs, copya, lda, b, ldb,
329 IF( result( k ).GE.thresh )
THEN
330 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
331 $ CALL
alahd( nout, path )
332 WRITE( nout, fmt = 9999 )
trans, m,
333 $ n, nrhs, nb,
itype, k,
343 CALL plasma_dealloc_handle( ht, info )
355 CALL
alasvm( path, nout, nfail, nrun, nerrs )
357 9999
format(
' TRANS=''', a1,
''', M=', i5,
', N=', i5,
', NRHS=', i4,
358 $
', NB=', i4,
', type', i2,
', test(', i2,
')=', g12.5 )
359 9998
format(
' M=', i5,
', N=', i5,
', NRHS=', i4,
', NB=', i4,
360 $
', type', i2,
', test(', i2,
')=', g12.5 )