This program is Copyright © 2005 by Jean-Marc Baillard and is used here by permission.
This program is supplied without representation or warranty of any kind. Jean-Marc Baillard and The Museum of HP Calculators therefore assume no responsibility and shall have no liability, consequential or otherwise, of any kind arising from the use of this program material or any part thereof.
-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 ...
Go back to the HP-41 software library
Go back to the general software library
Go
back to the main exhibit hall