3 SUBROUTINE pslatms( M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX,
4 $ KL, KU, PACK, A, IA, JA, DESCA, ORDER, WORK,
13 CHARACTER DIST, PACK, SYM
14 INTEGER IA, INFO, JA, KL, KU, LWORK, M, MODE, N, ORDER
18 INTEGER DESCA( * ), ISEED( 4 )
19 REAL A( * ), D( * ), WORK( * )
199 INTEGER BLOCK_CYCLIC_2D, DLEN_, DTYPE_, CTXT_, M_, N_,
200 $ MB_, NB_, RSRC_, CSRC_, LLD_
201 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
202 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
205 PARAMETER ( ZERO = 0.0e+0, one = 1.0e+0 )
208 INTEGER I, IDIST, IINFO, IPACK, IRSIGN, ISYM, LLB,
209 $ MNMIN, MYCOL, MYROW, NP, NPCOL, NPROW, NQ
213 INTEGER IDUM1( 1 ), IDUM2( 1 )
225 INTRINSIC abs,
max,
min, mod
229 IF( block_cyclic_2d*csrc_*ctxt_*dlen_*dtype_*lld_*mb_*m_*nb_*n_*
239 IF( ( myrow.GE.nprow .OR. myrow.LT.0 ) .OR.
240 $ ( mycol.GE.npcol .OR. mycol.LT.0 ) )
RETURN
242 np = numroc( n, desca( mb_ ), myrow, 0, nprow )
243 nq = numroc( n, desca( nb_ ), mycol, 0, npcol )
247 IF( m.EQ.0 .OR. n.EQ.0 )
252 IF( lsame( dist,
'U' ) )
THEN
254 ELSE IF( lsame( dist,
'S' ) )
THEN
256 ELSE IF( lsame( dist, 'n
' ) ) THEN
264 IF( LSAME( SYM, 'n
' ) ) THEN
267 ELSE IF( LSAME( SYM, 'p
' ) ) THEN
270 ELSE IF( LSAME( SYM, 's
' ) ) THEN
273 ELSE IF( LSAME( SYM, 'h
' ) ) THEN
282 IF( LSAME( PACK, 'n
' ) ) THEN
298.EQ.
IF( NPROW-1 ) THEN
299 INFO = -( 1600+CTXT_ )
301 CALL CHK1MAT( M, 1, N, 2, IA, JA, DESCA, 16, INFO )
303.NE..AND..NE.
IF( MN ISYM1 ) THEN
305.EQ.
ELSE IF( IDIST-1 ) THEN
307.EQ.
ELSE IF( ISYM-1 ) THEN
309.GT.
ELSE IF( ABS( MODE )6 ) THEN
311.NE..AND..NE..AND..LT.
ELSE IF( ( MODE0 ABS( MODE )6 ) COND
314.LT.
ELSE IF( KL0 ) THEN
316.LT..OR..NE..AND..NE.
ELSE IF( KU0 ( ISYM1 KLKU ) ) THEN
318.LT..OR..GT.
ELSE IF( ( ORDER0 ) ( ORDERN ) ) THEN
322 CALL PCHK1MAT( M, 1, N, 2, IA, JA, DESCA, 16, 0, IDUM1, IDUM2,
330.NE.
ELSE IF( IPACK0 ) THEN
332.GT..AND..LT.
ELSE IF( KL0 KLM-1 ) THEN
334.GT..AND..LT.
ELSE IF( KU0 KUN-1 ) THEN
336.NE..AND..NE.
ELSE IF( LLB0 LLBM-1 ) THEN
340 CALL PXERBLA( DESCA( CTXT_ ), 'pslatms', -INFO )
347 ISEED( I ) = MOD( ABS( ISEED( I ) ), 4096 )
350.NE.
IF( MOD( ISEED( 4 ), 2 )1 )
351 $ ISEED( 4 ) = ISEED( 4 ) + 1
357 CALL SLATM1( MODE, COND, IRSIGN, IDIST, ISEED, D, MNMIN, IINFO )
359.NE.
IF( IINFO0 ) THEN
365.NE..AND..NE.
IF( MODE0 ABS( MODE )6 ) THEN
371 TEMP = MAX( TEMP, ABS( D( I ) ) )
374.GT.
IF( TEMPZERO ) THEN
381 CALL SSCAL( MNMIN, ALPHA, D, 1 )
385 CALL SLASET( 'a
', NP, NQ, ZERO, ZERO, A, DESCA( LLD_ ) )
389 CALL PSLAGSY( M, LLB, D, A, IA, JA, DESCA, ISEED, ORDER, WORK,
subroutine slaset(uplo, m, n, alpha, beta, a, lda)
SLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine chk1mat(ma, mapos0, na, napos0, ia, ja, desca, descapos0, info)
subroutine pchk1mat(ma, mapos0, na, napos0, ia, ja, desca, descapos0, nextra, ex, expos, info)
subroutine pslagsy(n, k, d, a, ia, ja, desca, iseed, order, work, lwork, info)
subroutine pslatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, ia, ja, desca, order, work, lwork, info)