1 SUBROUTINE pzgbsv( 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 COMPLEX*16 A( * ), B( * ), WORK( * )
370 DOUBLE PRECISION ONE, ZERO
371 parameter( one = 1.0d+0 )
372 parameter( zero = 0.0d+0 )
373 COMPLEX*16 CONE, CZERO
374 parameter( cone = ( 1.0d+0, 0.0d+0 ) )
375 parameter( czero = ( 0.0d+0, 0.0d+0 ) )
377 parameter( int_one = 1 )
378 INTEGER DESCMULT, BIGNUM
379 parameter(descmult = 100, bignum = descmult * descmult)
380 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,
381 $ lld_, mb_, m_, nb_, n_, rsrc_
382 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
383 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
384 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
387 INTEGER ICTXT, MYCOL, MYROW, NB, NPCOL, NPROW,
405 IF( desca( dtype_ ) .EQ. block_cyclic_2d )
THEN
407 ictxt = desca( ctxt_ )
408 ELSEIF( desca( dtype_ ) .EQ. 501 )
THEN
412 info = -( 6*100 + dtype_ )
419 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
424 ws_factor = (nb+bwu)*(bwl+bwu)+6*(bwl+bwu)*(bwl+2*bwu)
428 CALL pzgbtrf( n, bwl, bwu, a, ja, desca, ipiv, work,
429 $
min( lwork, ws_factor ), work( 1+ws_factor ),
430 $ lwork-ws_factor, info )
435 IF( info .LT. 0 )
THEN
436 CALL pxerbla( ictxt,
'PZGBSV', -info )
443 CALL pzgbtrs(
'N', n, bwl, bwu, nrhs, a, ja, desca, ipiv, b, ib,
444 $ descb, work,
min( lwork, ws_factor ),
445 $ work( 1+ws_factor), lwork-ws_factor, info )
450 CALL pxerbla( ictxt,
'PZGBSV', -info )
subroutine pzgbsv(n, bwl, bwu, nrhs, a, ja, desca, ipiv, b, ib, descb, work, lwork, info)
subroutine pzgbtrf(n, bwl, bwu, a, ja, desca, ipiv, af, laf, work, lwork, info)
subroutine pzgbtrs(trans, n, bwl, bwu, nrhs, a, ja, desca, ipiv, b, ib, descb, af, laf, work, lwork, info)