1 SUBROUTINE pdgbsv( N, BWL, BWU, NRHS, A, JA, DESCA, IPIV, B, IB,
2 $ DESCB, WORK, LWORK, INFO )
12 INTEGER BWL, BWU, IB, INFO, JA, LWORK, N, NRHS
15 INTEGER DESCA( * ), DESCB( * ), IPIV( * )
16 DOUBLE PRECISION A( * ), B( * ), WORK( * )
370 DOUBLE PRECISION ONE, ZERO
371 parameter( one = 1.0d+0 )
372 parameter( zero = 0.0d+0 )
374 parameter( int_one = 1 )
375 INTEGER DESCMULT, BIGNUM
376 parameter(descmult = 100, bignum = descmult * descmult)
377 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,
378 $ lld_, mb_, m_, nb_, n_, rsrc_
379 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
380 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
381 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
384 INTEGER ICTXT, MYCOL, MYROW, NB, NPCOL, NPROW,
402 IF( desca( dtype_ ) .EQ. block_cyclic_2d )
THEN
404 ictxt = desca( ctxt_ )
405 ELSEIF( desca( dtype_ ) .EQ. 501 )
THEN
409 info = -( 6*100 + dtype_ )
416 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
421 ws_factor = (nb+bwu)*(bwl+bwu)+6*(bwl+bwu)*(bwl+2*bwu)
425 CALL pdgbtrf( n, bwl, bwu, a, ja, desca, ipiv, work,
426 $
min( lwork, ws_factor ), work( 1+ws_factor ),
427 $ lwork-ws_factor, info )
432 IF( info .LT. 0 )
THEN
433 CALL pxerbla( ictxt,
'PDGBSV', -info )
440 CALL pdgbtrs(
'N', n, bwl, bwu, nrhs, a, ja, desca, ipiv, b, ib,
441 $ descb, work,
min( lwork, ws_factor ),
442 $ work( 1+ws_factor), lwork-ws_factor, info )
447 CALL pxerbla( ictxt,
'PDGBSV', -info )
subroutine pdgbsv(n, bwl, bwu, nrhs, a, ja, desca, ipiv, b, ib, descb, work, lwork, info)
subroutine pdgbtrf(n, bwl, bwu, a, ja, desca, ipiv, af, laf, work, lwork, info)
subroutine pdgbtrs(trans, n, bwl, bwu, nrhs, a, ja, desca, ipiv, b, ib, descb, af, laf, work, lwork, info)