107 SUBROUTINE clarfg( N, ALPHA, X, INCX, TAU )
126 parameter( one = 1.0e+0, zero = 0.0e+0 )
130 REAL alphi, alphr, beta, rsafmn, safmin, xnorm
138 INTRINSIC abs, aimag, cmplx,
REAL, sign
151 alphr =
REAL( alpha )
152 alphi = aimag( alpha )
154 IF( xnorm.EQ.zero .AND. alphi.EQ.zero )
THEN
163 beta = -sign(
slapy3( alphr, alphi, xnorm ), alphr )
165 rsafmn = one / safmin
168 IF( abs( beta ).LT.safmin )
THEN
174 CALL
csscal( n-1, rsafmn,
x, incx )
178 IF( abs( beta ).LT.safmin )
184 alpha = cmplx( alphr, alphi )
185 beta = -sign(
slapy3( alphr, alphi, xnorm ), alphr )
187 tau = cmplx( ( beta-alphr ) / beta, -alphi / beta )
188 alpha =
cladiv( cmplx( one ), alpha-beta )
189 CALL
cscal( n-1, alpha,
x, incx )
subroutine cscal(N, CA, CX, INCX)
CSCAL
COMPLEX function cladiv(X, Y)
CLADIV performs complex division in real arithmetic, avoiding unnecessary overflow.
REAL function slamch(CMACH)
SLAMCH
subroutine clarfg(N, ALPHA, X, INCX, TAU)
CLARFG generates an elementary reflector (Householder matrix).
REAL function slapy3(X, Y, Z)
SLAPY3 returns sqrt(x2+y2+z2).
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
REAL function scnrm2(N, X, INCX)
SCNRM2
subroutine csscal(N, SA, CX, INCX)
CSSCAL