Mercurial > octave-nkf
comparison libcruft/slatec-fn/asinh.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 *DECK ASINH | |
2 FUNCTION ASINH (X) | |
3 C***BEGIN PROLOGUE ASINH | |
4 C***PURPOSE Compute the arc hyperbolic sine. | |
5 C***LIBRARY SLATEC (FNLIB) | |
6 C***CATEGORY C4C | |
7 C***TYPE SINGLE PRECISION (ASINH-S, DASINH-D, CASINH-C) | |
8 C***KEYWORDS ARC HYPERBOLIC SINE, ASINH, ELEMENTARY FUNCTIONS, FNLIB, | |
9 C INVERSE HYPERBOLIC SINE | |
10 C***AUTHOR Fullerton, W., (LANL) | |
11 C***DESCRIPTION | |
12 C | |
13 C ASINH(X) computes the arc hyperbolic sine of X. | |
14 C | |
15 C Series for ASNH on the interval 0. to 1.00000D+00 | |
16 C with weighted error 2.19E-17 | |
17 C log weighted error 16.66 | |
18 C significant figures required 15.60 | |
19 C decimal places required 17.31 | |
20 C | |
21 C***REFERENCES (NONE) | |
22 C***ROUTINES CALLED CSEVL, INITS, R1MACH | |
23 C***REVISION HISTORY (YYMMDD) | |
24 C 770401 DATE WRITTEN | |
25 C 890531 Changed all specific intrinsics to generic. (WRB) | |
26 C 890531 REVISION DATE from Version 3.2 | |
27 C 891214 Prologue converted to Version 4.0 format. (BAB) | |
28 C***END PROLOGUE ASINH | |
29 DIMENSION ASNHCS(20) | |
30 LOGICAL FIRST | |
31 SAVE ALN2, ASNHCS, NTERMS, XMAX, SQEPS, FIRST | |
32 DATA ALN2 /0.6931471805 5994530942E0/ | |
33 DATA ASNHCS( 1) / -.1282003991 1738186E0 / | |
34 DATA ASNHCS( 2) / -.0588117611 89951768E0 / | |
35 DATA ASNHCS( 3) / .0047274654 32212481E0 / | |
36 DATA ASNHCS( 4) / -.0004938363 16265361E0 / | |
37 DATA ASNHCS( 5) / .0000585062 07058557E0 / | |
38 DATA ASNHCS( 6) / -.0000074669 98328931E0 / | |
39 DATA ASNHCS( 7) / .0000010011 69358355E0 / | |
40 DATA ASNHCS( 8) / -.0000001390 35438587E0 / | |
41 DATA ASNHCS( 9) / .0000000198 23169483E0 / | |
42 DATA ASNHCS(10) / -.0000000028 84746841E0 / | |
43 DATA ASNHCS(11) / .0000000004 26729654E0 / | |
44 DATA ASNHCS(12) / -.0000000000 63976084E0 / | |
45 DATA ASNHCS(13) / .0000000000 09699168E0 / | |
46 DATA ASNHCS(14) / -.0000000000 01484427E0 / | |
47 DATA ASNHCS(15) / .0000000000 00229037E0 / | |
48 DATA ASNHCS(16) / -.0000000000 00035588E0 / | |
49 DATA ASNHCS(17) / .0000000000 00005563E0 / | |
50 DATA ASNHCS(18) / -.0000000000 00000874E0 / | |
51 DATA ASNHCS(19) / .0000000000 00000138E0 / | |
52 DATA ASNHCS(20) / -.0000000000 00000021E0 / | |
53 DATA FIRST /.TRUE./ | |
54 C***FIRST EXECUTABLE STATEMENT ASINH | |
55 IF (FIRST) THEN | |
56 NTERMS = INITS (ASNHCS, 20, 0.1*R1MACH(3)) | |
57 SQEPS = SQRT (R1MACH(3)) | |
58 XMAX = 1.0/SQEPS | |
59 ENDIF | |
60 FIRST = .FALSE. | |
61 C | |
62 Y = ABS(X) | |
63 IF (Y.GT.1.0) GO TO 20 | |
64 C | |
65 ASINH = X | |
66 IF (Y.GT.SQEPS) ASINH = X*(1.0 + CSEVL (2.*X*X-1., ASNHCS,NTERMS)) | |
67 RETURN | |
68 C | |
69 20 IF (Y.LT.XMAX) ASINH = LOG (Y + SQRT(Y**2+1.)) | |
70 IF (Y.GE.XMAX) ASINH = ALN2 + LOG(Y) | |
71 ASINH = SIGN (ASINH, X) | |
72 C | |
73 RETURN | |
74 END |