1 SUBROUTINE pzpbsv( UPLO, N, BW, NRHS, A, JA, DESCA, B, IB, DESCB,
13 INTEGER BW, IB, INFO, JA, LWORK, N, NRHS
16 INTEGER DESCA( * ), DESCB( * )
17 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+2*bw)*bw
423 CALL pzpbtrf( uplo, n, bw, 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,
'PZPBSV', -info )
438 CALL pzpbtrs( uplo, n, bw, nrhs, a, ja, desca, b, ib, descb, work,
439 $
min( lwork, ws_factor ), work( 1+ws_factor),
440 $ lwork-ws_factor, info )
445 CALL pxerbla( ictxt,
'PZPBSV', -info )
subroutine pzpbsv(uplo, n, bw, nrhs, a, ja, desca, b, ib, descb, work, lwork, info)
subroutine pzpbtrf(uplo, n, bw, a, ja, desca, af, laf, work, lwork, info)
subroutine pzpbtrs(uplo, n, bw, nrhs, a, ja, desca, b, ib, descb, af, laf, work, lwork, info)