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
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 )
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 IF( nprow .EQ. 1 )
THEN
204 a( i, diag_index ) = a( i, diag_index )
205 $ + dble( bwl+bwu+1 )
208 IF( nprow .EQ. 1 )
THEN
209 a( diag_index, i ) = a( diag_index, i )
210 $ + dble( bwl+bwu+1 )
222 IF( nprow .EQ. 1 )
THEN
224 IF( mod(i+mycol*nb,2) .EQ. 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)