123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- SUBROUTINE DLARFG( N, ALPHA, X, INCX, TAU )
- INTEGER INCX, N
- DOUBLE PRECISION ALPHA, TAU
- DOUBLE PRECISION X( * )
- DOUBLE PRECISION ONE, ZERO
- PARAMETER ( ONE
- INTEGER
- DOUBLE
- DOUBLE
- EXTERNAL
- INTRINSIC
- EXTERNAL
- IF( N.LE.1 ) THEN
- TAU
- RETURN
- END
- XNORM
- IF( XNORM.EQ.ZERO
- TAU
- ELSE
- BETA
- SAFMIN / DLAMCH( )
- KNT = 0
- IF( ABS( BETA ).LT.SAFMIN ) THEN
- *
- * XNORM, BETA may be inaccurate; scale X and recompute them
- *
- RSAFMN = ONE /
- 10 CONTINUE
- KNT
- CALL
- BETA
- ALPHA
- IF( ABS( BETA
- $ GO
- XNORM
- BETA
- END
- TAU / BETA
- CALL DSCAL( N-1, ONE /
- DO
- BETA
- 20 CONTINUE
- ALPHA
- END
- RETURN
- END
|