1 SUBROUTINE pzbmatgen( 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 COMPLEX*16 A( LDA, * )
116 DOUBLE PRECISION ONE, ZERO
117 PARAMETER ( ONE = 1.0d+0 )
118 parameter( zero = 0.0d+0 )
119 COMPLEX*16 CONE, CZERO
120 parameter( cone = ( 1.0d+0, 0.0d+0 ) )
121 parameter( czero = ( 0.0d+0, 0.0d+0 ) )
124 INTEGER DIAG_INDEX, I, J, M_MATGEN, NQ, N_MATGEN,
132 INTEGER ICEIL, NUMROC
133 EXTERNAL ICEIL, NUMROC, LSAME
138 IF( lsame( aform,
'L' ).OR.lsame( aform,
'U' ) )
THEN
142 IF( lsame( aform,
'L' ) )
THEN
148 m_matgen = bwl + bwu + 1
154 nq = numroc( n, nb, mycol, iacol, npcol )
159 IF( lsame( aform,
'T' ) .OR.
160 $ ( lsame( aform2,
'T' ) ) )
THEN
163 $ n_matgen, m_matgen,
164 $ nb, m_matgen, a( start_index, 1 ),
166 $ iseed, 0, nq, 0, m_matgen,
167 $ mycol, myrow, npcol, nprow )
172 $ m_matgen, n_matgen,
173 $ m_matgen, nb, a( start_index, 1 ),
175 $ iseed, 0, m_matgen, 0, nq,
176 $ myrow, mycol, nprow, npcol )
182 DO 2000 i=1, lda-m_matgen
189 a( i-lda+m_matgen, j ) = czero
197 IF( lsame( aform2,
'D' ).OR.
198 $ ( lsame( aform,
'L' ).OR.lsame( aform,
'U' ) ) )
THEN
204 IF( lsame( aform,
'T' ) .OR.
205 $ ( lsame( aform2,
'T' ) ) )
THEN
206 IF( nprow .EQ. 1 )
THEN
207 a( i, diag_index ) = dcmplx( dble( a( i, diag_index ) )
208 $ + dble( 2*( bwl+bwu+1 ) ) )
211 IF( nprow .EQ. 1 )
THEN
212 a( diag_index, i ) = dcmplx( dble( a( diag_index, i ) )
213 $ + dble( 2*( bwl+bwu+1 ) ) )
225 IF( nprow .EQ. 1 )
THEN
227 IF( mod(i+mycol*nb,2) .EQ. 1 )
THEN
228 a( diag_index+1, i ) =
229 $ dcmplx( dble( a( diag_index+1, i ) )
230 $ + dble( 2*( bwl+bwu+1 ) ) )
234 a( diag_index-1, i ) =
235 $ dcmplx( dble( a( diag_index-1, i ) )
236 $ + dble( 2*( bwl+bwu+1 ) ) )