1 SUBROUTINE pdbmatgen( ICTXT, AFORM, AFORM2, BWL, BWU, N,
3 $ LDA, IAROW, IACOL, ISEED,
4 $ MYROW, MYCOL, NPROW, NPCOL )
15 CHARACTER*1 AFORM, AFORM2
16 INTEGER IACOL, IAROW, ICTXT,
17 $ ISEED, LDA, MB, MYCOL, MYROW, N,
18 $ nb, npcol, nprow, bwl, bwu
21 DOUBLE PRECISION A( LDA, * )
116 DOUBLE PRECISION ONE, ZERO
117 PARAMETER ( ONE = 1.0d+0 )
118 parameter( zero = 0.0d+0 )
121 INTEGER DIAG_INDEX, I, J, M_MATGEN, NQ, N_MATGEN,
129 INTEGER ICEIL, NUMROC
130 EXTERNAL ICEIL, NUMROC, LSAME
135 IF( lsame( aform,
'L' ).OR.lsame( aform, 'u
' ) ) THEN
139 IF( LSAME( AFORM, 'l
' ) ) THEN
145 M_MATGEN = BWL + BWU + 1
151 NQ = NUMROC( N, NB, MYCOL, IACOL, NPCOL )
156 IF( LSAME( AFORM, 't.OR.
' )
157 $ ( LSAME( AFORM2, 't
' ) ) ) THEN
159 CALL PDMATGEN( ICTXT, 't
', 'n
',
160 $ N_MATGEN, M_MATGEN,
161 $ NB, M_MATGEN, A( START_INDEX, 1 ),
163 $ ISEED, 0, NQ, 0, M_MATGEN,
164 $ MYCOL, MYROW, NPCOL, NPROW )
168 CALL PDMATGEN( ICTXT, 'n
', 'n
',
169 $ M_MATGEN, N_MATGEN,
170 $ M_MATGEN, NB, A( START_INDEX, 1 ),
172 $ ISEED, 0, M_MATGEN, 0, NQ,
173 $ MYROW, MYCOL, NPROW, NPCOL )
179 DO 2000 I=1, LDA-M_MATGEN
186 A( I-LDA+M_MATGEN, J ) = ZERO
194 IF( LSAME( AFORM2, 'd.OR.
' )
195 $ ( LSAME( AFORM, 'l.OR.
' )LSAME( AFORM, 'u
' ) ) ) THEN
201 IF( LSAME( AFORM, 't.OR.
' )
202 $ ( LSAME( AFORM2, 't
' ) ) ) THEN
203.EQ.
IF( NPROW 1 ) THEN
204 A( I, DIAG_INDEX ) = A( I, DIAG_INDEX )
205 $ + DBLE( BWL+BWU+1 )
208.EQ.
IF( NPROW 1 ) THEN
209 A( DIAG_INDEX, I ) = A( DIAG_INDEX, I )
210 $ + DBLE( BWL+BWU+1 )
222.EQ.
IF( NPROW 1 ) THEN
224.EQ.
IF( MOD(I+MYCOL*NB,2) 1 ) THEN
225 A( DIAG_INDEX+1, I ) = A( DIAG_INDEX+1, I )
226 $ + DBLE( BWL+BWU+1 )
230 A( DIAG_INDEX-1, I ) = A( DIAG_INDEX-1, I )
231 $ + DBLE( BWL+BWU+1 )
subroutine pdmatgen(ictxt, aform, diag, m, n, mb, nb, a, lda, iarow, iacol, iseed, iroff, irnum, icoff, icnum, myrow, mycol, nprow, npcol)
subroutine pdbmatgen(ictxt, aform, aform2, bwl, bwu, n, mb, nb, a, lda, iarow, iacol, iseed, myrow, mycol, nprow, npcol)