The Museum of HP Calculators

HP Forum Archive 20

[ Return to Index | Top of Index ]

Mardi Gras Basic Trigs (HP-12C)
Message #1 Posted by Gerson W. Barbosa on 8 Mar 2011, 10:00 a.m.

01-   2	                21-   +
02-   /		        22-   2
03- ENTER		23-   /
04- ENTER               24-   -	 
05-   4                 25-   2
06-  y^x                26-   +
07-  12/                27- ENTER
08- ENTER    		28-   *
09- ENTER               29-   2
10-   1			30-   *
11-   4			31-   1
12-   0			32-   -
13-   /			33- ENTER
14-   1                 34- ENTER
15-   +			35- ENTER  
16-   *			36-   *
17- x<>y		37-  CHS
18-  e^x                38-   1
19- ENTER               39-   +
20-  1/x                40-  SQRT
                        41- GTO 00

Usage:

Enter angle in radians ( 0 <= x <= pi/2 )

R/S -> sin(x)

x<>y -> cos(x)

/ -> tan(x)

Examples:

x | sin(x) | cos(x) | tan(x) | ------+-------------+-------------+-------------+ 1.57 | 0.999999683 | 0.000796323 | 1255.771443 | 1.50 | 0.997494987 | 0.070737199 | 14.10142048 | 1.00 | 0.841470987 | 0.540302303 | 1.557407736 | 0.50 | 0.479425537 | 0.877582563 | 0.546302487 | 0.00 | 0.000000000 | 1.000000000 | 0.000000000 |

x |sin(x*pi/180)|cos(x*pi/180)|tan(x*pi/180)| ------+-------------+-------------+-------------+ 90.0 | 1.000000000 |-0.000000003*|-294117647.1*| 89.9 | 0.999998477 | 0.001745329 | 572.9570052 | 60.0 | 0.866025403 | 0.500000001 | 1.732050803 | 45.0 | 0.707106783 | 0.707106779 | 1.000000006 | 30.0 | 0.500000001 | 0.866025403 | 0.577350271 |

*) wrong sign for cos(90 degrees); invalid result for tan(90 degrees).

pi/180 = 1.745329252e-02

Warnings: 1) not suitable for geodesic applications, space program, land surveying and other critical applications. 2) tan(89.999999) is a bit off: 62,500,000.00 :-)

      
Re: Mardi Gras Basic Trigs (HP-12C)
Message #2 Posted by Jim Yohe on 8 Mar 2011, 12:45 p.m.,
in response to message #1 by Gerson W. Barbosa

But you said that you enter the angle in radians so an angle of 89.999999 should yield you -1.99520539304 which still isn't close to "your" implied 62,500,000.00. ;-)

            
Re: Mardi Gras Basic Trigs (HP-12C)
Message #3 Posted by Gerson W. Barbosa on 8 Mar 2011, 3:09 p.m.,
in response to message #2 by Jim Yohe

I should have written tan(89.999999 degrees), sorry! Angles in degrees have to be converted to radians, like in the second table examples, which have been multiplied by 1.745329252e-02, that is, pi/180. I forgot to mention the running time, less than five seconds (ordinary HP-12C). Also, the program gives at least eight digits of accuracy most of the times.

Regards,

Gerson.

------------

The HP-12c Platinum should give more accurate results, but I don't have one to check this out.

Edited: 8 Mar 2011, 3:33 p.m.

                  
Re: Mardi Gras Basic Trigs (HP-12C)
Message #4 Posted by Marcus von Cube, Germany on 8 Mar 2011, 5:34 p.m.,
in response to message #3 by Gerson W. Barbosa

Gerson, can you give some background on the formulas used?

                        
Re: Mardi Gras Basic Trigs (HP-12C)
Message #5 Posted by Gerson W. Barbosa on 8 Mar 2011, 6:46 p.m.,
in response to message #4 by Marcus von Cube, Germany

Hi Marcus,

Sorry for the lack of documentation. I hope the following is clear. Basically, I combined cos(x) and cosh(x) and used my HP-28S to obtain the required Taylor series.

Regards,

Gerson.

3:          'COS(X)'
2:               'X'
1:                 8

TAYLR => '1-.5*X^2+ 4.16666666667E-2*X^4 -1.38888888889E-3*X^ 6+2.48015873016E-5*X ^8'

3: 'COSH(X)' 2: 'X' 1: 8

TAYLR => '1+.5*X^2+ 4.16666666667E-2*X^4 +1.38888888889E-3*X^ 6+2.48015873016E-5*X ^8'

+ => '1-.5*X^2+ 4.16666666667E-2*X^4 -1.38888888889E-3*X^ 6+2.48015873016E-5*X ^8+ (1+.5*X^2+ 4.16666666667E-2*X^4 +1.38888888889E-3*X^ 6+2.48015873016E-5*X ^8)'

COLCT => '2+8.33333333334E-2* X^4+4.96031746032E-5 *X^8'

That is,

cos(x) ~ 2 + x^4/12 + x^8/20160 - cosh(x),

which has been rewritten as

cos(x) ~ 2 + x^4/12(1 + x^4/12/140) - (e^x + 1/e^x)/2

This provides 9 digits of accuracy or so for |x|<=pi/4. So, the argument is first divided by 2 then a trigonometric identity is used:

cos(x) = 2*(cos(x/2))^2 -1

Finally, sin(x) is computed as

sin(x) = sqrt(1 - cos(x)^2)

The tables below give an idea of the overall accuracy.

An HP-32S-II has been used to simulate the hp-12c platinum results in the table below, so they may differ a little.

hp-12c platinum

x | sin(x) | cos(x) | tan(x) | ------+-------------+-------------+-------------+ 1.57 | 0.999999683 | 0.000796326 | 1255.766602 | 1.50 | 0.997494987 | 0.070737201 | 14.10142002 | 1.00 | 0.841470985 | 0.540302306 | 1.557407725 | 0.50 | 0.479425539 | 0.877582562 | 0.546302490 | 0.00 | 0.000000000 | 1.000000000 | 0.000000000 |

x |sin(x*pi/180)|cos(x*pi/180)|tan(x*pi/180)| ------+-------------+-------------+-------------+ 90.0 | 1.000000000 |-0.000000001*|-1492537313.*| 89.9 | 0.999998477 | 0.001745328 | 572.9574320 | 60.0 | 0.866025404 | 0.500000000 | 1.732050808 | 45.0 | 0.707106781 | 0.707106781 | 1.000000000 | 30.0 | 0.500000000 | 0.866025404 | 0.577350269 |

pi/180 = 1.745329252e-02

HP-15C

x(RAD)| sin(x) | cos(x) | tan(x) | ------+-------------+-------------+-------------+ 1.57 | 0.999999683 | 0.000796327 | 1255.765591 | 1.50 | 0.997494987 | 0.070737202 | 14.10141995 | 1.00 | 0.841470985 | 0.540302306 | 1.557407725 | 0.50 | 0.479425539 | 0.877582562 | 0.546302490 | 0.00 | 0.000000000 | 1.000000000 | 0.000000000 |

x(DEG)| sin(x) | cos(x) | tan(x) | ------+-------------+-------------+-------------+ 90.0 | 1.000000000 | 0.000000000 | 9.999999 99 | 89.9 | 0.999998477 | 0.001745328 | 572.9572134 | 60.0 | 0.866025404 | 0.500000000 | 1.732050808 | 45.0 | 0.707106781 | 0.707106781 | 1.000000000 | 30.0 | 0.500000000 | 0.866025404 | 0.577350269 |

                              
Re: Mardi Gras Basic Trigs (HP-12C)
Message #6 Posted by Marcus von Cube, Germany on 9 Mar 2011, 2:01 a.m.,
in response to message #5 by Gerson W. Barbosa

Thanks for the explanation, Gerson. Did you find the idea somewhere? I assume you did, but not in a book or on the Net but in a corner of your brain. ;)

                                    
Re: Mardi Gras Basic Trigs (HP-12C)
Message #7 Posted by Gerson W. Barbosa on 9 Mar 2011, 9:02 a.m.,
in response to message #6 by Marcus von Cube, Germany

Marcus,

I certainly knew the Taylor series for sin(x) and cos(x) are similar to those for sinh(x) and cosh(x), except the former ones are alternating series and the latter ones are not. However, it never had occured to me to combine them to approximate the trigonometric functions... not until yesterday morning when playing with my 28S I added the first few terms of the sin(x) and sinh(x) series together and realized this might work. Then I tried cos(x) and cosh(x) and the resulting series appeared to require less steps on the 12C. Anyway, other than rewriting the series, I haven't tried to optimize the program, so I think there is still room for improvement. I think the program runs fast even on the older HP-38, I'll try it on Nonpareil later.

Regards,

Gerson.

                              
Re: Mardi Gras Basic Trigs (HP-12C)
Message #8 Posted by Stuart Sprott on 9 Mar 2011, 6:11 a.m.,
in response to message #5 by Gerson W. Barbosa

I can remember using a sharp 167p ( at least I think it was a 167p)back in the early 1970s, before the HP35 took the world by storm.

It had 100 program steps, basic arithmetic functions, square root and 10 memory registers. Note no trig functions.

It was possible to program accurate trig functions. The only problem was that once the function was generated their was little room left for anything else. All the same we managed to write some basic Surveying programs that at time seemed out of this world. Prior to this you had to use trig tables and curta calculators.

We used infinite series for the trig functions. See below.

Sin x = x - x3/3! + x5/5! - x7/7! + ......

where x is in radians and in the above context x3 means x cubed.

I spent hours programming this machine. It was my introduction to programming. I was totally hooked.

The machine was about the size of a present day lap top and about double the thickness. The program was lost the minute you switched off the calculator. However you could store the program on a punch card. The card had to be manually punched as you wrote the program. Editing was an interesting exercise. You seemed to go through a stack of cards before you got it right.

                                    
Re: Mardi Gras Basic Trigs (HP-12C)
Message #9 Posted by Gerson W. Barbosa on 9 Mar 2011, 9:47 a.m.,
in response to message #8 by Stuart Sprott

Stuart,

I know what you mean. Once I knew a retired municipal surveyor who had a small surveying office at home and spent more time there doing calculations than at the field. He had no computer, only one 11C loaded with of couple of simple programs and one sharp scientific calculator to help him. He showed me a printed spread sheet as an example of the calculations he did. I told him it was nonsense to do that kind of work without a computer and advised him to get at least a pocket computer. He purchased a CASIO PB 700 for about 100 dollars (4 kB RAM, later upgraded to whopping 16 kB!) and I wrote him a BASIC program which did in seconds the work it previously took him a whole day or two. He had a small museum of old mechanical and electronic calculators he had purchased during his career. He told me he had used trigonometric tables in the beginning. He showed me a Curta Type II, shining in its case, complete with manuals and offered me for about 20 dollars... which I refused to buy because I was not interested in mechanical devices. I remember one of the manuals described a procedure to approximate the sine function on it. Those were the (hard) days!

Cheers,

Gerson.

                              
Re: Mardi Gras Basic Trigs (HP-12C)
Message #10 Posted by Steve Perkins on 9 Mar 2011, 7:10 p.m.,
in response to message #5 by Gerson W. Barbosa

Nice implementation and explanation!

I hadn't realized that the 12C Platinum carried 12 significant digits (while showing up to 10).

I verified your table is correct using my Platinum that I had to dig out.

                                    
Re: Mardi Gras Basic Trigs (HP-12C)
Message #11 Posted by Gerson W. Barbosa on 9 Mar 2011, 9:49 p.m.,
in response to message #10 by Steve Perkins

Hello Steve,

Thanks for taking the time to key that in and verifying the table. I was curious to know about the Platinum results. As I said, no optimization has been tried yet. The program is fast on the ordinary 12C but somewhat long.

Regards,

Gerson.


[ Return to Index | Top of Index ]

Go back to the main exhibit hall