1 SUBROUTINE pcdbsv( N, BWL, BWU, NRHS, A, JA, DESCA, B, IB, DESCB,
12 INTEGER BWL, BWU, IB, INFO, JA, LWORK, N, NRHS
15 INTEGER DESCA( * ), DESCB( * )
16 COMPLEX A( * ), B( * ), WORK( * )
366 parameter( one = 1.0e+0 )
367 parameter( zero = 0.0e+0 )
369 parameter( cone = ( 1.0e+0, 0.0e+0 ) )
370 parameter( czero = ( 0.0e+0, 0.0e+0 ) )
372 parameter( int_one = 1 )
373 INTEGER DESCMULT, BIGNUM
374 parameter(descmult = 100, bignum = descmult * descmult)
375 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,
376 $ lld_, mb_, m_, nb_, n_, rsrc_
377 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
378 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
379 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
382 INTEGER ICTXT, MYCOL, MYROW, NB, NPCOL, NPROW,
400 IF( desca( dtype_ ) .EQ. block_cyclic_2d )
THEN
402 ictxt = desca( ctxt_ )
403 ELSEIF( desca( dtype_ ) .EQ. 501 )
THEN
407 info = -( 6*100 + dtype_ )
414 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
419 ws_factor = nb*(bwl+bwu)+6*
max(bwl,bwu)*
max(bwl,bwu)
423 CALL pcdbtrf( n, bwl, bwu, a, ja, desca, work,
424 $
min( lwork, ws_factor ), work( 1+ws_factor ),
425 $ lwork-ws_factor, info )
430 IF( info .LT. 0 )
THEN
431 CALL pxerbla( ictxt,
'PCDBSV', -info )
438 CALL pcdbtrs(
'N', n, bwl, bwu, nrhs, a, ja, desca, b, ib, descb,
439 $ work,
min( lwork, ws_factor ), work( 1+ws_factor),
440 $ lwork-ws_factor, info )
445 CALL pxerbla( ictxt,
'PCDBSV', -info )
subroutine pcdbsv(n, bwl, bwu, nrhs, a, ja, desca, b, ib, descb, work, lwork, info)
subroutine pcdbtrf(n, bwl, bwu, a, ja, desca, af, laf, work, lwork, info)
subroutine pcdbtrs(trans, n, bwl, bwu, nrhs, a, ja, desca, b, ib, descb, af, laf, work, lwork, info)