1 SUBROUTINE psbmatgen( 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
117 PARAMETER ( ONE = 1.0e+0 )
118 parameter( zero = 0.0e+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 )
180 DO 2000 i=1, lda-m_matgen
188 a( i-lda+m_matgen, j ) = zero
196 IF( lsame( aform2,
'D' ).OR.
197 $ ( lsame( aform,
'L' ).OR.lsame( aform,
'U' ) ) )
THEN
203 IF( lsame( aform,
'T' ) .OR.
204 $ ( lsame( aform2,
'T' ) ) )
THEN
205 IF( nprow .EQ. 1 )
THEN
206 a( i, diag_index ) = a( i, diag_index )
207 $ + real( bwl+bwu+1 )
210 IF( nprow .EQ. 1 )
THEN
211 a( diag_index, i ) = a( diag_index, i )
212 $ + real( bwl+bwu+1 )
224 IF( nprow .EQ. 1 )
THEN
226 IF( mod(i+mycol*nb,2) .EQ. 1 )
THEN
227 a( diag_index+1, i ) = a( diag_index+1, i )
228 $ + real( bwl+bwu+1 )
232 a( diag_index-1, i ) = a( diag_index-1, i )
233 $ + real( bwl+bwu+1 )