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 )
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 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
431 CALL pxerbla( ictxt,
'PZDBSV', -info )
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)