1 SUBROUTINE psgetf2( M, N, A, IA, JA, DESCA, IPIV, INFO )
9 INTEGER IA, INFO, JA, M, N
138 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,
139 $ LLD_, MB_, M_, NB_, N_, RSRC_
140 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
141 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
142 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
144 parameter( one = 1.0e+0, zero = 0.0e+0 )
148 INTEGER I, IACOL, IAROW, ICOFF, ICTXT, IIA, IROFF, J,
149 $ JJA, MN, MYCOL, MYROW, NPCOL, NPROW
154 $ igebs2d,
infog2l, psamax, psger,
164 ictxt = desca( ctxt_ )
170 IF( nprow.EQ.-1 )
THEN
173 CALL chk1mat( m, 1, n, 2, ia, ja, desca, 6, info )
175 iroff = mod( ia-1, desca( mb_ ) )
176 icoff = mod( ja-1, desca( nb_ ) )
177 IF( n+icoff.GT.desca( nb_ ) )
THEN
179 ELSE IF( iroff.NE.0 )
THEN
181 ELSE IF( icoff.NE.0 )
THEN
183 ELSE IF( desca( mb_ ).NE.desca( nb_ ) )
THEN
191 CALL BLACS_ABORT( ICTXT, 1 )
197.EQ..OR..EQ.
IF( M0 N0 )
201 CALL INFOG2L( IA, JA, DESCA, NPROW, NPCOL, MYROW, MYCOL, IIA, JJA,
203 CALL PB_TOPGET( ICTXT, 'broadcast
', 'rowwise
', ROWBTOP )
205.EQ.
IF( MYCOLIACOL ) THEN
206 DO 10 J = JA, JA+MN-1
211 CALL PSAMAX( M-J+JA, GMAX, IPIV( IIA+J-JA ), A, I, J,
213.NE.
IF( GMAXZERO ) THEN
217 CALL PSSWAP( N, A, I, JA, DESCA, DESCA( M_ ), A,
218 $ IPIV( IIA+J-JA ), JA, DESCA, DESCA( M_ ) )
223 $ CALL PSSCAL( M-J+JA-1, ONE / GMAX, A, I+1, J,
225.EQ.
ELSE IF( INFO0 ) THEN
231.LT.
IF( J-JA+1MN ) THEN
232 CALL PSGER( M-J+JA-1, N-J+JA-1, -ONE, A, I+1, J, DESCA,
233 $ 1, A, I, J+1, DESCA, DESCA( M_ ), A, I+1,
238 CALL IGEBS2D( ICTXT, 'rowwise
', ROWBTOP, MN, 1, IPIV( IIA ),
243 CALL IGEBR2D( ICTXT, 'rowwise
', ROWBTOP, MN, 1, IPIV( IIA ),
subroutine chk1mat(ma, mapos0, na, napos0, ia, ja, desca, descapos0, info)
subroutine psscal(n, alpha, x, ix, jx, descx, incx)
subroutine infog2l(grindx, gcindx, desc, nprow, npcol, myrow, mycol, lrindx, lcindx, rsrc, csrc)
subroutine psgetf2(m, n, a, ia, ja, desca, ipiv, info)