hyperbolics

# Hyperbolic Functions for the HP-41

Overview

-This program computes the hyperbolic sine, cosine, tangent, the Gudermannian function and their inverses.
-I've used  E^X-1 & LN1+X instead of  E^X & LNX in order to achieve a good accuracy for small arguments too.

Formulae:

Sh x = Sinh x = [ ( ex - 1 ) - ( e -x - 1 ) ]/2                                Ash x = Asinh x = Ln [ 1 + x + x2 / ( 1 + ( 1 + x2 )1/2 ) ]
Ch x = Cosh x = ( ex + e -x )/2                                                 Ach x = Acosh x = Ln [ 1 + ( x - 1 ) + ( ( x + 1 )( x - 1 ) )1/2 ]
Th x = Tanh x = ( e2x - 1 )/( e2x + 1 )                                       Ath x = Atanh x = (1/2).Ln ( 1 + 2x/( 1 - x ) )
Gd x = 2.Arctan ( ex ) - Pi/2 = 2.Arctan ( tanh x/2 )                 Agd x = Ln Tan ( x/2 + Pi/4 ) = 2.Atanh ( tan x/2 )

Program Listing

 01  LBL "SH" 02  E^X-1 03  LASTX 04  CHS 05  E^X-1 06  - 07  2 08  / 09  RTN 10  LBL "CH"    11  E^X 12  LASTX 13  CHS 14  E^X 15  + 16  2 17  / 18  RTN 19  LBL "TH" 20  ST+ X 21  LBL 01 22  E^X-1 23  RCL X 24  2 25  + 26  / 27  RTN 28  LBL "GD" 29  XEQ 01 30  RAD 31  ATAN 32  DEG 33  ST+ X 34  RTN 35  LBL "ASH" 36  SIGN 37  LASTX 38  ABS 39  ENTER^ 40  X^2 41  1 42  + 43  SQRT 44  1 45  + 46  RCL Y 47  X^2 48  X<>Y 49  / 50  + 51  LN1+X 52  * 53  RTN 54  LBL "ACH" 55  1 56  - 57  ENTER^ 58  STO Z 59  2 60  + 61  * 62  SQRT 63  + 64  LN1+X 65  RTN 66  LBL "ATH" 67  XEQ 02 68  2 69  / 70  RTN 71  LBL "AGD" 72  2 73  / 74  RAD 75  TAN 76  DEG 77  LBL 02 78  SIGN 79  LASTX       80  ABS 81  ENTER^ 82  ST+ Y 83  CHS 84  1 85  + 86  / 87  LN1+X 88  * 89  END

( 145 bytes / SIZE 000 )

 STACK INPUT OUTPUT X x hyp(x)

Examples:

2  XEQ "SH"   >>>>  Sinh 2  =  3.626860408
2  XEQ "CH"  >>>>  Cosh 2 =  3.762195691
2  XEQ "TH"  >>>>   Tanh 2 =  0.964027580
2  XEQ "GD"  >>>>   Gd 2   =  1.301760336

14   XEQ "ASH"  >>>>  Asinh 14  = 3.333477587
14   XEQ "ACH" >>>>  Acosh 14 = 3.330926553
0.7  XEQ "ATH"  >>>>  Atanh 0.7 = 0.867300528
0.7  XEQ "AGD"  >>>>  Agd 0.7   = 0.765350459

Remarks:

-If the function f  is  Asinh , Atanh or Agd , and if  x < 0 , this program calculates  -f(-x)
to avoid a loss of accuracy for large negative arguments.
-For instance,  Asinh 12000 = 10.08580911  whence  Asinh (-12000) = -10.08580911
-Otherwise, it would give  -10.12663110 ( like the Math Pac ) by cancellation of significant digits.

-One may also write several variations, for example:

Hyperbolic cosine for small arguments:

LBL "CHX-1"
E^X-1
LASTX
CHS
E^X-1
+
2
/
RTN

Hyperbolic tangent for large positive arguments:

LBL "1-THX"
ST+ X
E^X
1
+                   for example:   12  XEQ "1-THX"  >>>>  7.550269089 10 -11  whence  Tanh 12 = 0.999,999,999,924,497,309,11
2
X<>Y
/
RTN

Inverse hyperbolic cosine for small arguments:

-Simply add  LBL "ACH1+X"  after line 56

Inverse hyperbolic tangent for arguments close to 1:

LBL "ATH1-X"
ENTER^
CHS
1
+
ST+ X                   for example:   EEX 12 CHS  XEQ "ATH1-X"  >>>>  Atanh ( 0.999999999999 ) = 14.16208415
X<>Y
/
LN1+X
2
/
RTN

... and so on ...