Mercurial > hg > octave-lyh
comparison libcruft/blas/snrm2.f @ 7789:82be108cc558
First attempt at single precision tyeps
* * *
corrections to qrupdate single precision routines
* * *
prefer demotion to single over promotion to double
* * *
Add single precision support to log2 function
* * *
Trivial PROJECT file update
* * *
Cache optimized hermitian/transpose methods
* * *
Add tests for tranpose/hermitian and ChangeLog entry for new transpose code
author | David Bateman <dbateman@free.fr> |
---|---|
date | Sun, 27 Apr 2008 22:34:17 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
7788:45f5faba05a2 | 7789:82be108cc558 |
---|---|
1 REAL FUNCTION SNRM2(N,X,INCX) | |
2 * .. Scalar Arguments .. | |
3 INTEGER INCX,N | |
4 * .. | |
5 * .. Array Arguments .. | |
6 REAL X(*) | |
7 * .. | |
8 * | |
9 * Purpose | |
10 * ======= | |
11 * | |
12 * SNRM2 returns the euclidean norm of a vector via the function | |
13 * name, so that | |
14 * | |
15 * SNRM2 := sqrt( x'*x ). | |
16 * | |
17 * Further Details | |
18 * =============== | |
19 * | |
20 * -- This version written on 25-October-1982. | |
21 * Modified on 14-October-1993 to inline the call to SLASSQ. | |
22 * Sven Hammarling, Nag Ltd. | |
23 * | |
24 * | |
25 * .. Parameters .. | |
26 REAL ONE,ZERO | |
27 PARAMETER (ONE=1.0E+0,ZERO=0.0E+0) | |
28 * .. | |
29 * .. Local Scalars .. | |
30 REAL ABSXI,NORM,SCALE,SSQ | |
31 INTEGER IX | |
32 * .. | |
33 * .. Intrinsic Functions .. | |
34 INTRINSIC ABS,SQRT | |
35 * .. | |
36 IF (N.LT.1 .OR. INCX.LT.1) THEN | |
37 NORM = ZERO | |
38 ELSE IF (N.EQ.1) THEN | |
39 NORM = ABS(X(1)) | |
40 ELSE | |
41 SCALE = ZERO | |
42 SSQ = ONE | |
43 * The following loop is equivalent to this call to the LAPACK | |
44 * auxiliary routine: | |
45 * CALL SLASSQ( N, X, INCX, SCALE, SSQ ) | |
46 * | |
47 DO 10 IX = 1,1 + (N-1)*INCX,INCX | |
48 IF (X(IX).NE.ZERO) THEN | |
49 ABSXI = ABS(X(IX)) | |
50 IF (SCALE.LT.ABSXI) THEN | |
51 SSQ = ONE + SSQ* (SCALE/ABSXI)**2 | |
52 SCALE = ABSXI | |
53 ELSE | |
54 SSQ = SSQ + (ABSXI/SCALE)**2 | |
55 END IF | |
56 END IF | |
57 10 CONTINUE | |
58 NORM = SCALE*SQRT(SSQ) | |
59 END IF | |
60 * | |
61 SNRM2 = NORM | |
62 RETURN | |
63 * | |
64 * End of SNRM2. | |
65 * | |
66 END |