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 )
subroutine psmatgen(ictxt, aform, diag, m, n, mb, nb, a, lda, iarow, iacol, iseed, iroff, irnum, icoff, icnum, myrow, mycol, nprow, npcol)
subroutine psbmatgen(ictxt, aform, aform2, bwl, bwu, n, mb, nb, a, lda, iarow, iacol, iseed, myrow, mycol, nprow, npcol)