SUBROUTINE INFOG1L( GINDX, NB, NPROCS, MYROC, ISRCPROC, LINDX, $ ROCSRC )
*
* -- ScaLAPACK tools routine (version 1.5) --
* University of Tennessee, Knoxville, Oak Ridge National Laboratory, * and University of California, Berkeley. * May 1, 1997 * * .. Scalar Arguments .. INTEGER GINDX, ISRCPROC, LINDX, MYROC, NB, NPROCS, $ ROCSRC * ..
*
* Purpose
* GINDX (global input) INTEGER * The global starting index of the submatrix. * * NB (global input) INTEGER * The block size.
*
* NPROCS (global input) INTEGER
* The total number of processes over which the distributed * submatrix is distributed. * * MYROC (local input) INTEGER * The coordinate of the process calling this routine.
*
* ISRCPROC (global input) INTEGER
* The coordinate of the process having the first entry of * the distributed submatrix. * * LINDX (local output) INTEGER * The local starting indexes of the distributed submatrix.
*
* ROCSRC (global output) INTEGER
* The coordinate of the process that possesses the first * row and column of the submatrix.
*
* .. Local Scalars .. INTEGER GCPY, IBLK * .. * .. Intrinsic Functions .. INTRINSIC MOD * .. * .. Executable Statements .. * GCPY = GINDX-1 IBLK = GCPY / NB ROCSRC = MOD( IBLK + ISRCPROC, NPROCS ) * LINDX = ( IBLK / NPROCS + 1 ) * NB + 1 * IF( MOD(MYROC+NPROCS-ISRCPROC,NPROCS).GE.MOD(IBLK, NPROCS) ) THEN IF( MYROC.EQ.ROCSRC ) $ LINDX = LINDX + MOD( GCPY, NB ) LINDX = LINDX - NB END IF * RETURN * * End of INFOG1L * END