1 SUBROUTINE pdptsv( N, NRHS, D, E, JA, DESCA, B, IB, DESCB, WORK,
12 INTEGER IB, INFO, JA, LWORK, N, NRHS
15 INTEGER DESCA( * ), DESCB( * )
16 DOUBLE PRECISION B( * ), D( * ), E( * ), WORK( * )
366 DOUBLE PRECISION ONE, ZERO
367 parameter( one = 1.0d+0 )
368 parameter( zero = 0.0d+0 )
370 parameter( int_one = 1 )
371 INTEGER DESCMULT, BIGNUM
372 parameter(descmult = 100, bignum = descmult * descmult)
373 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,
374 $ lld_, mb_, m_, nb_, n_, rsrc_
375 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
376 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
377 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
380 INTEGER ICTXT, MYCOL, MYROW, NB, NPCOL, NPROW,
398 IF( desca( dtype_ ) .EQ. block_cyclic_2d )
THEN
400 ictxt = desca( ctxt_ )
401 ELSEIF( desca( dtype_ ) .EQ. 501 )
THEN
404 ELSEIF( desca( dtype_ ) .EQ. 502 )
THEN
408 info = -( 5*100 + dtype_ )
415 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
420 ws_factor = (12*npcol + 3*nb)
424 CALL pdpttrf( n, d, e, ja, desca, work,
min( lwork, ws_factor ),
425 $ work( 1+ws_factor ), lwork-ws_factor, info )
430 IF( info .LT. 0 )
THEN
431 CALL pxerbla( ictxt,
'PDPTSV', -info )
438 CALL pdpttrs( n, nrhs, d, e, ja, desca, b, ib, descb, work,
439 $
min( lwork, ws_factor ), work( 1+ws_factor),
440 $ lwork-ws_factor, info )
445 CALL pxerbla( ictxt,
'PDPTSV', -info )