1 SUBROUTINE pzdbsv( 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*16 A( * ), B( * ), WORK( * )
365 DOUBLE PRECISION ONE, ZERO
366 parameter( one = 1.0d+0 )
367 parameter( zero = 0.0d+0 )
368 COMPLEX*16 CONE, CZERO
369 parameter( cone = ( 1.0d+0, 0.0d+0 ) )
370 parameter( czero = ( 0.0d+0, 0.0d+0 ) )
372 parameter( int_one = 1 )
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, ,
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_ )
419 ws_factor = nb*(bwl+bwu)+6*
max(bwl,bwu)*
max(bwl,bwu)
423 CALL pzdbtrf( 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
438 CALL PZDBTRS( '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, 'pzdbsv', -INFO )
subroutine pzdbsv(n, bwl, bwu, nrhs, a, ja, desca, b, ib, descb, work, lwork, info)
subroutine pzdbtrf(n, bwl, bwu, a, ja, desca, af, laf, work, lwork, info)
subroutine pzdbtrs(trans, n, bwl, bwu, nrhs, a, ja, desca, b, ib, descb, af, laf, work, lwork, info)