dacosh.f 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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