1 SUBROUTINE psdtsv( N, NRHS, DL, D, DU, JA, DESCA, B, IB, DESCB,

12 INTEGER IB, INFO, JA, LWORK, N, NRHS

15 INTEGER DESCA( * ), DESCB( * )

16 REAL B( * ), D( * ), DL( * ), DU( * ), WORK( * )

376 parameter( one = 1.0e+0 )

377 parameter( zero = 0.0e+0 )

379 parameter( int_one = 1 )

380 INTEGER DESCMULT, BIGNUM

381 parameter(descmult = 100, bignum = descmult * descmult)

382 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,

383 $ lld_, mb_, m_, nb_, n_, rsrc_

384 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,

385 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,

386 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )

389 INTEGER ICTXT, MYCOL, MYROW, NB, NPCOL, NPROW,

407 IF( desca( dtype_ ) .EQ. block_cyclic_2d )

THEN
409 ictxt = desca( ctxt_ )

410 ELSEIF( desca( dtype_ ) .EQ. 501 )

THEN
413 ELSEIF( desca( dtype_ ) .EQ. 502 )

THEN
417 info = -( 6*100 + dtype_ )

424 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )

429 ws_factor = (12*npcol+3*nb)

433 CALL psdttrf( n, dl, d, du, ja, desca, work,

434 $

min( lwork, ws_factor ), work( 1+ws_factor ),

435 $ lwork-ws_factor, info )

440 IF( info .LT. 0 )

THEN
441 CALL pxerbla( ictxt,

'PSDTSV', -info )

448 CALL psdttrs(

'N', n, nrhs, dl, d, du, ja, desca, b, ib, descb,

449 $ work,

min( lwork, ws_factor ), work( 1+ws_factor),

450 $ lwork-ws_factor, info )

455 CALL pxerbla( ictxt,

'PSDTSV', -info )