1 SUBROUTINE pclarfg( N, ALPHA, IAX, JAX, X, IX, JX, DESCX, INCX,
10 INTEGER IAX, INCX, IX, JAX, JX, N
15 COMPLEX TAU( * ), X( * )
145 INTEGER , CSRC_, , DLEN_, DTYPE_,
147 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
148 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
149 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
151 parameter( one = 1.0e+0, zero = 0.0e+0 )
154 INTEGER ICTXT, IIAX, INDXTAU, IXCOL, IXROW, J, JJAX,
155 $ knt, mycol, myrow, npcol, nprow
156 REAL ALPHI, ALPHR, BETA, RSAFMN, SAFMIN, XNORM
165 EXTERNAL cladiv, slapy3,
slamch
168 INTRINSIC abs, aimag,
cmplx, real, sign
174 ictxt = descx( ctxt_ )
177 IF( incx.EQ.descx( m_ ) )
THEN
181 CALL infog2l( ix, jax, descx, nprow, npcol, myrow, mycol,
182 $ iiax, jjax, ixrow, ixcol )
189 IF( mycol.EQ.ixcol )
THEN
190 j = iiax+(jjax-1)*descx( lld_ )
191 CALL cgebs2d( ictxt,
'Rowwise',
' ', 1, 1, x( j ), 1 )
194 CALL cgebr2d( ictxt,
'Rowwise',
' ', 1, 1, alpha, 1,
204 CALL infog2l( iax, jx, descx, nprow, npcol, myrow, mycol,
205 $ iiax, jjax, ixrow, ixcol )
212 IF( myrow.EQ.ixrow )
THEN
213 j = iiax+(jjax-1)*descx( lld_ )
214 CALL cgebs2d( ictxt,
'Columnwise',
' ', 1, 1, x( j ), 1 )
217 CALL cgebr2d( ictxt,
'Columnwise', '
', 1, 1, ALPHA, 1,
226 TAU( INDXTAU ) = ZERO
230 CALL PSCNRM2( N-1, XNORM, X, IX, JX, DESCX, INCX )
231 ALPHR = REAL( ALPHA )
232 ALPHI = AIMAG( ALPHA )
234.EQ..AND..EQ.
IF( XNORMZERO ALPHIZERO ) THEN
238 TAU( INDXTAU ) = ZERO
244 BETA = -SIGN( SLAPY3( ALPHR, ALPHI, XNORM ), ALPHR )
245 SAFMIN = SLAMCH( 's
' )
246 RSAFMN = ONE / SAFMIN
247.LT.
IF( ABS( BETA )SAFMIN ) THEN
254 CALL PCSSCAL( N-1, RSAFMN, X, IX, JX, DESCX, INCX )
258.LT.
IF( ABS( BETA )SAFMIN )
263 CALL PSCNRM2( N-1, XNORM, X, IX, JX, DESCX, INCX )
264 ALPHA = CMPLX( ALPHR, ALPHI )
265 BETA = -SIGN( SLAPY3( ALPHR, ALPHI, XNORM ), ALPHR )
266 TAU( INDXTAU ) = CMPLX( ( BETA-ALPHR ) / BETA,
268 ALPHA = CLADIV( CMPLX( ONE ), ALPHA-BETA )
269 CALL PCSCAL( N-1, ALPHA, X, IX, JX, DESCX, INCX )
278 TAU( INDXTAU ) = CMPLX( ( BETA-ALPHR ) / BETA,
280 ALPHA = CLADIV( CMPLX( ONE ), ALPHA-BETA )
281 CALL PCSCAL( N-1, ALPHA, X, IX, JX, DESCX, INCX )
subroutine infog2l(grindx, gcindx, desc, nprow, npcol, myrow, mycol, lrindx, lcindx, rsrc, csrc)
subroutine pclarfg(n, alpha, iax, jax, x, ix, jx, descx, incx, tau)