1 SUBROUTINE pzdtsv( N, NRHS, DL, D, DU, JA, DESCA, B, IB, DESCB,
12 INTEGER IB, INFO, JA, LWORK, N, NRHS
15 INTEGER DESCA( * ), DESCB( * )
16 COMPLEX*16 B( * ), D( * ), DL( * ), DU( * ), WORK( * )
375 DOUBLE PRECISION ONE, ZERO
376 parameter( one = 1.0d+0 )
377 parameter( zero = 0.0d+0 )
378 COMPLEX*16 CONE, CZERO
379 parameter( cone = ( 1.0d+0, 0.0d+0 ) )
380 parameter( czero = ( 0.0d+0, 0.0d+0 ) )
382 parameter( int_one = 1 )
383 INTEGER DESCMULT, BIGNUM
384 parameter(descmult = 100, bignum = descmult * descmult)
385 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,
386 $ lld_, mb_, m_, nb_, n_, rsrc_
387 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
388 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
389 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
392 INTEGER ICTXT, MYCOL, MYROW, NB, NPCOL, NPROW,
410 IF( desca( dtype_ ) .EQ. block_cyclic_2d )
THEN
412 ictxt = desca( ctxt_ )
413 ELSEIF( desca( dtype_ ) .EQ. 501 )
THEN
416 ELSEIF( desca( dtype_ ) .EQ. 502 )
THEN
420 info = -( 6*100 + dtype_ )
427 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
432 ws_factor = (12*npcol+3*nb)
436 CALL pzdttrf( n, dl, d, du, ja, desca, work,
437 $
min( lwork, ws_factor ), work( 1+ws_factor ),
438 $ lwork-ws_factor, info )
443 IF( info .LT. 0 )
THEN
444 CALL pxerbla( ictxt,
'PZDTSV', -info )
451 CALL pzdttrs(
'N', n, nrhs, dl, d, du, ja, desca, b, ib, descb,
452 $ work,
min( lwork, ws_factor ), work( 1+ws_factor),
453 $ lwork-ws_factor, info )
458 CALL pxerbla( ictxt,
'PZDTSV', -info )