111 DOUBLE PRECISION , TAU
114 DOUBLE PRECISION X( * )
120 DOUBLE PRECISION TWO, ONE, ZERO
121 parameter( two = 2.0d+0, one = 1.0d+0, zero = 0.0d+0 )
125 DOUBLE PRECISION BETA, BIGNUM, SAVEALPHA, SMLNUM, XNORM
128 DOUBLE PRECISION DLAMCH, DLAPY2, DNRM2
129 EXTERNAL dlamch, dlapy2, dnrm2
144 xnorm = dnrm2( n-1, x, incx )
146 IF( xnorm.EQ.zero )
THEN
150 IF(
alpha.GE.zero )
THEN
160 x( 1 + (j-1)*incx ) = 0
169 smlnum = dlamch(
'S' ) / dlamch(
'E' )
171 IF( abs( beta ).LT.smlnum )
THEN
175 bignum = one / smlnum
178 CALL dscal( n-1, bignum, x, incx )
181 IF( (abs( beta ).LT.smlnum) .AND. (knt .LT. 20) )
186 xnorm = dnrm2( n-1, x, incx )
191 IF( beta.LT.zero )
THEN
200 IF ( abs(tau).LE.smlnum )
THEN
209 IF( savealpha.GE.zero )
THEN
214 x( 1 + (j-1)*incx ) = 0
subroutine dlarfgp(n, alpha, x, incx, tau)
DLARFGP generates an elementary reflector (Householder matrix) with non-negative beta.