asinh.f 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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