2329
|
1 *DECK DACOSH |
|
2 DOUBLE PRECISION FUNCTION DACOSH (X) |
|
3 C***BEGIN PROLOGUE DACOSH |
|
4 C***PURPOSE Compute the arc hyperbolic cosine. |
|
5 C***LIBRARY SLATEC (FNLIB) |
|
6 C***CATEGORY C4C |
|
7 C***TYPE DOUBLE PRECISION (ACOSH-S, DACOSH-D, CACOSH-C) |
|
8 C***KEYWORDS ACOSH, ARC HYPERBOLIC COSINE, ELEMENTARY FUNCTIONS, FNLIB, |
|
9 C INVERSE HYPERBOLIC COSINE |
|
10 C***AUTHOR Fullerton, W., (LANL) |
|
11 C***DESCRIPTION |
|
12 C |
|
13 C DACOSH(X) calculates the double precision arc hyperbolic cosine for |
|
14 C double precision argument X. The result is returned on the |
|
15 C positive branch. |
|
16 C |
|
17 C***REFERENCES (NONE) |
|
18 C***ROUTINES CALLED D1MACH, XERMSG |
|
19 C***REVISION HISTORY (YYMMDD) |
|
20 C 770601 DATE WRITTEN |
|
21 C 890531 Changed all specific intrinsics to generic. (WRB) |
|
22 C 890531 REVISION DATE from Version 3.2 |
|
23 C 891214 Prologue converted to Version 4.0 format. (BAB) |
|
24 C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ) |
|
25 C***END PROLOGUE DACOSH |
|
26 DOUBLE PRECISION X, DLN2, XMAX, D1MACH |
|
27 SAVE DLN2, XMAX |
|
28 DATA DLN2 / 0.6931471805 5994530941 7232121458 18 D0 / |
|
29 DATA XMAX / 0.D0 / |
|
30 C***FIRST EXECUTABLE STATEMENT DACOSH |
|
31 IF (XMAX.EQ.0.D0) XMAX = 1.0D0/SQRT(D1MACH(3)) |
|
32 C |
|
33 IF (X .LT. 1.D0) CALL XERMSG ('SLATEC', 'DACOSH', |
|
34 + 'X LESS THAN 1', 1, 2) |
|
35 C |
|
36 IF (X.LT.XMAX) DACOSH = LOG (X+SQRT(X*X-1.0D0)) |
|
37 IF (X.GE.XMAX) DACOSH = DLN2 + LOG(X) |
|
38 C |
|
39 RETURN |
|
40 END |