1 SUBROUTINE pddbsv( 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 DOUBLE PRECISION A( * ), B( * ), WORK( * )
365 DOUBLE PRECISION ONE, ZERO
366 parameter( one = 1.0d+0 )
367 parameter( zero = 0.0d+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*(bwl+bwu)+6*
max(bwl,bwu)*
max(bwl,bwu)
420 CALL pddbtrf( n, bwl, bwu, 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,
'PDDBSV', -info )
435 CALL pddbtrs(
'N', n, bwl, bwu, nrhs, a, ja, desca, b, ib, descb,
436 $ work,
min( lwork, ws_factor ), work( 1+ws_factor),
437 $ lwork-ws_factor, info )
442 CALL pxerbla( ictxt,
'PDDBSV', -info )
subroutine pddbsv(n, bwl, bwu, nrhs, a, ja, desca, b, ib, descb, work, lwork, info)
subroutine pddbtrf(n, bwl, bwu, a, ja, desca, af, laf, work, lwork, info)
subroutine pddbtrs(trans, n, bwl, bwu, nrhs, a, ja, desca, b, ib, descb, af, laf, work, lwork, info)