1 SUBROUTINE pzposv( UPLO, N, NRHS, A, IA, JA, DESCA, B, IB, JB,
11 INTEGER IA, IB, INFO, JA, JB, N, NRHS
14 INTEGER DESCA( * ), DESCB( * )
15 COMPLEX*16 A( * ), B( * )
167 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,
168 $ lld_, mb_, m_, nb_, n_, rsrc_
169 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
170 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
171 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
175 INTEGER IAROW, IBROW, ICOFFA, ICTXT, IROFFA, IROFFB,
176 $ mycol, myrow, npcol, nprow
179 INTEGER IDUM1( 1 ), IDUM2( 1 )
188 EXTERNAL indxg2p, lsame
197 ictxt = desca( ctxt_ )
198 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
203 IF( nprow.EQ.-1 )
THEN
206 upper = lsame( uplo,
'U' )
207 CALL chk1mat( n, 2, n, 2, ia, ja, desca, 7, info )
209 iarow = indxg2p( ia, desca( mb_ ), myrow, desca( rsrc_ ),
211 ibrow = indxg2p( ib, descb( mb_ ), myrow, descb( rsrc_ ),
213 iroffa = mod( ia-1, desca( mb_ ) )
214 iroffb = mod( ib-1, descb( mb_ ) )
215 icoffa = mod( ja-1, desca( nb_ ) )
216 IF ( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
218 ELSE IF( iroffa.NE.0 )
THEN
220 ELSE IF( icoffa.NE.0 )
THEN
222 ELSE IF( desca( mb_ ).NE.desca( nb_ ) )
THEN
224 ELSE IF( iroffb.NE.0 .OR. ibrow.NE.iarow )
THEN
226 ELSE IF( descb( mb_ ).NE.desca( nb_ ) )
THEN
231 idum1( 1 ) = ichar(
'U' )
233 idum1( 1 ) = ichar(
'L' )
236 CALL pchk2mat( n, 2, n, 2, ia, ja, desca, 7, n, 2, nrhs,
237 $ 3, ib, jb, descb, 11, 1, idum1, idum2, info )
241 CALL pxerbla( ictxt,
'PZPOSV', -info )
247 CALL pzpotrf( uplo, n, a, ia, ja, desca, info )
254 CALL pzpotrs( uplo, n, nrhs, a, ia, ja, desca, b, ib, jb,
subroutine pchk2mat(ma, mapos0, na, napos0, ia, ja, desca, descapos0, mb, mbpos0, nb, nbpos0, ib, jb, descb, descbpos0, nextra, ex, expos, info)