1 SUBROUTINE pcptsv( UPLO, N, NRHS, D, E, JA, DESCA, B, IB, DESCB,

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

16 INTEGER DESCA( * ), DESCB( * )

17 COMPLEX B( * ), E( * ), WORK( * )

372 parameter( one = 1.0e+0 )

373 parameter( zero = 0.0e+0 )

375 parameter( cone = ( 1.0e+0, 0.0e+0 ) )

376 parameter( czero = ( 0.0e+0, 0.0e+0 ) )

378 parameter( int_one = 1 )

379 INTEGER DESCMULT, BIGNUM

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

381 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,

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

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

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

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

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

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

THEN
408 ictxt = desca( ctxt_ )

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

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

THEN
416 info = -( 5*100 + dtype_ )

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

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

432 CALL pcpttrf( n, d, e, ja, desca, work,

min( lwork, ws_factor ),

433 $ work( 1+ws_factor ), lwork-ws_factor, info )

438 IF( info .LT. 0 )

THEN
439 CALL pxerbla( ictxt,

'PCPTSV', -info )

446 CALL pcpttrs( uplo, n, nrhs, d, e, ja, desca, b, ib, descb, work,

447 $

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

448 $ lwork-ws_factor, info )

453 CALL pxerbla( ictxt,

'PCPTSV', -info )