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 )