1 SUBROUTINE pspbsv( UPLO, N, BW, NRHS, A, JA, DESCA, B, IB, DESCB,
13 INTEGER BW, IB, INFO, JA, LWORK, N, NRHS
16 INTEGER DESCA( * ), DESCB( * )
17 REAL A( * ), B( * ), WORK( * )
366 parameter( one = 1.0e+0 )
367 parameter( zero = 0.0e+0 )
369 parameter( int_one = 1 )
370 INTEGER DESCMULT, BIGNUM
371 parameter(descmult = 100, bignum = descmult * descmult)
372 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,
373 $ lld_, mb_, m_, nb_, n_, rsrc_
374 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
375 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
376 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
379 INTEGER ICTXT, MYCOL, MYROW, NB, NPCOL, NPROW,
397 IF( desca( dtype_ ) .EQ. block_cyclic_2d )
THEN
399 ictxt = desca( ctxt_ )
400 ELSEIF( desca( dtype_ ) .EQ. 501 )
THEN
404 info = -( 6*100 + dtype_ )
411 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
416 ws_factor = (nb+2*bw)*bw
420 CALL pspbtrf( uplo, n, bw, a, ja, desca, work,
421 $
min( lwork, ws_factor ), work( 1+ws_factor ),
422 $ lwork-ws_factor, info )
427 IF( info .LT. 0 )
THEN
428 CALL pxerbla( ictxt,
'PSPBSV', -info )
435 CALL pspbtrs( uplo, n, bw, nrhs, a, ja, desca, b, ib, descb, work,
436 $
min( lwork, ws_factor ), work( 1+ws_factor),
437 $ lwork-ws_factor, info )
442 CALL pxerbla( ictxt,
'PSPBSV', -info )