105 SUBROUTINE dlarfg( N, ALPHA, X, INCX, TAU )
113 DOUBLE PRECISION ALPHA, TAU
116 DOUBLE PRECISION X( * )
122 DOUBLE PRECISION ONE, ZERO
123 parameter( one = 1.0d+0, zero = 0.0d+0 )
127 DOUBLE PRECISION BETA, RSAFMN, SAFMIN, XNORM
130 DOUBLE PRECISION DLAMCH, DLAPY2, DNRM2
131 EXTERNAL dlamch, dlapy2, dnrm2
146 xnorm = dnrm2( n-1, x, incx )
148 IF( xnorm.EQ.zero )
THEN
157 beta = -sign( dlapy2( alpha, xnorm ), alpha )
158 safmin = dlamch(
'S' ) / dlamch( 'e
' )
160.LT.
IF( ABS( BETA )SAFMIN ) THEN
164 RSAFMN = ONE / SAFMIN
167 CALL DSCAL( N-1, RSAFMN, X, INCX )
170.LT..AND..LT.
IF( (ABS( BETA )SAFMIN) (KNT 20) )
175 XNORM = DNRM2( N-1, X, INCX )
176 BETA = -SIGN( DLAPY2( ALPHA, XNORM ), ALPHA )
178 TAU = ( BETA-ALPHA ) / BETA
179 CALL DSCAL( N-1, ONE / ( ALPHA-BETA ), X, INCX )
subroutine dlarfg(n, alpha, x, incx, tau)
DLARFG generates an elementary reflector (Householder matrix).