HP Forums
(71B) Approximation for Tan(x) for the HP-71B - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Software Libraries (/forum-10.html)
+--- Forum: General Software Library (/forum-13.html)
+--- Thread: (71B) Approximation for Tan(x) for the HP-71B (/thread-9157.html)



(71B) Approximation for Tan(x) for the HP-71B - Namir - 09-25-2017 08:03 PM

This is an approximation for tan(x) using a sequence of polynomial coefficients that I found in a book "A Handbook of Integer Sequences" by A. J. A Sloane that presents numerous sequences of integers. The book does cover a few approximation to functions, including tan(x). Here is the code for the HP-71B. When you run the program, it prompts you to enter a value of X. The program then displays the calculated value of tan(x), pauses for 3 seconds, and then displays the %$ error. The function offers excellent approximation for (0, 0.35). You can use trig identities to calculate the tan(x) for higher angles using accurate tan(x) for smaller x values, for example, using:

tan(x) = 2*tan(x/2)/(1 + tan(x/2)^2)

Here is the HP-71B listing.

Code:
10 REM TAN(X) APPROXIMATION
20 RADIANS @ N=12
30 DIM C(12)
40 FOR I = 1 TO N @ READ C(I) @ NEXT I
50 INPUT "X? ";X
60 S = 0
70 P = X
80 X2 = X * X
90 FOR I = 1 TO N
100 S = S + C(I) * P / FACT(2*I-1)
110 P = P * X2
120 NEXT I
130 DISP "TAN(";X;")=";S @ WAIT 3
140 T=TAN(X)
150 DISP "%ERR=";100*(T-S)/T
160 DATA 1, 2, 16, 272, 7936, 353792, 22368256
170 DATA 1903757312, 209865342976
180 DATA 29088885112832, 4.9514980531241E+15, 1.01542388650685E+18
190 END

Here is another version that combines the original sequence and the factorials

Here is the HP-71B listing.

Code:
10 REM TAN(X) APPROXIMATION
20 RADIANS @ N=12
30 DIM C(12)
40 FOR I = 1 TO N @ READ C(I) @ NEXT I
50 INPUT "X? ";X
60 S = 0
70 P = X
80 X2 = X * X
90 FOR I = 1 TO N
100 S = S + C(I) * P 
110 P = P * X2
120 NEXT I
130 DISP "TAN(";X;")=";S @ WAIT 3
140 T=TAN(X)
150 DISP "%ERR=";100*(T-S)/T
160 DATA 1, 0.333333333333333, 0.133333333333333
162 DATA 0.053968253968254, 0.0218694885361552
164 DATA  0.0088632355299022, 0.00359212803657248
170 DATA 0.00145583438705132, 0.000590027440945586
180 DATA 0.000239129114243552, 0.0000969153795692946
182 DATA 0.0000392783238833167
190 END