acosh.f 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. *DECK ACOSH
  2. FUNCTION ACOSH (X)
  3. C***BEGIN PROLOGUE ACOSH
  4. C***PURPOSE Compute the arc hyperbolic cosine.
  5. C***LIBRARY SLATEC (FNLIB)
  6. C***CATEGORY C4C
  7. C***TYPE SINGLE 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 ACOSH(X) computes the arc hyperbolic cosine of X.
  14. C
  15. C***REFERENCES (NONE)
  16. C***ROUTINES CALLED R1MACH, XERMSG
  17. C***REVISION HISTORY (YYMMDD)
  18. C 770401 DATE WRITTEN
  19. C 890531 Changed all specific intrinsics to generic. (WRB)
  20. C 890531 REVISION DATE from Version 3.2
  21. C 891214 Prologue converted to Version 4.0 format. (BAB)
  22. C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
  23. C 900326 Removed duplicate information from DESCRIPTION section.
  24. C (WRB)
  25. C***END PROLOGUE ACOSH
  26. SAVE ALN2,XMAX
  27. DATA ALN2 / 0.6931471805 5994530942E0/
  28. DATA XMAX /0./
  29. C***FIRST EXECUTABLE STATEMENT ACOSH
  30. IF (XMAX.EQ.0.) XMAX = 1.0/SQRT(R1MACH(3))
  31. C
  32. IF (X .LT. 1.0) CALL XERMSG ('SLATEC', 'ACOSH', 'X LESS THAN 1',
  33. + 1, 2)
  34. C
  35. IF (X.LT.XMAX) ACOSH = LOG (X + SQRT(X*X-1.0))
  36. IF (X.GE.XMAX) ACOSH = ALN2 + LOG(X)
  37. C
  38. RETURN
  39. END