12-10-2021, 05:12 PM
RPN Program:
001- 2 023- CHS 045- g x≤y 067- / 089- g GTO 265
002- STO 6 024- g x≤y 046- g GTO 017 068- + 090- 2
003- R↓ 025- g GTO 031 047- R↓ 069- RCL 8 091- STO 6
004- RCL .0 026- 2 048- x⇄y 070- × 092- R↓
005- ÷ 027- × 049- STO 8 071- ENTER 093- RCL .0
006- x⇄y 028- x⇄y 050- g x² 072- g x² 094- ÷
007- STO 4 029- - 051- ENTER 073- 4 095- CHS
008- x⇄y 030- ENTER 052- ENTER 074- × 096- 9
009- ENTER 031- R↓ 053- ENTER 075- CHS 097- 0
010- g x² 032- ENTER 054- RCL .2 076- 3 098- +
011- g √ᵡ 033- g x² 055- × 077- + 099- g GTO 006
012- 3 034- g √ᵡ 056- RCL .3 078- × 100- RCL .0
013- 6 035- ENTER 057- - 079- RCL 6 101- ÷
014- 0 036- ENTER 058- × 080- 2 102- STO 4
015- g x≤y 037- 9 059- RCL .4 081- g x≤y 103- x⇄y
016- g GTO 120 038- 0 060- + 082- g GTO 087 104- STO 7
017- R↓ 039- - 061- × 083- R↓ 105- 1
018- R↓ 040- g x=0 062- RCL .5 084- g x=0 106- STO 6
019- 9 041- g GTO 047 063- - 085- g GTO 114 107- RCL 4
020- 0 042- R↓ 064- × 086- g GTO 109 108- g GTO 009
021- g x≤y 043- 9 065- RCL .1 087- R↓ 109- CLx
022- g GTO 026 044- 0 066- 3 088- x⇄y 110- STO 6
111- x⇄y 152- 0 193- g GTO 196 234- + 275- g GTO 000
112- RCL 4 153- × 194- 1/x 235- ×
113- g GTO 095 154- RCL .0 195- 9 236- RCL .8
114- x⇄y 155- × 196- 0 237- -
115- RCL 4 156- g GTO 265 197- RCL .1 238- × optional steps:
116- x⇄y 157- x⇄y 198- × 239- RCL .9
117- ÷ 158- STO 4 199- STO 6 240- + 276- 1.745329252
118- RCL 7 159- x⇄y 200- x⇄y 241- × 287- EEX
119- g GTO 266 160- 2 201- 2 242- 3 288- 2
120- x⇄y 161- STO 7 202- ENTER 243- 1/x 289- CHS
121- EEX 162- R↓ 203- 3 244- - 290- STO .1
122- 1 163- 1 204- g √ᵡ 245- × 291- 2.1
123- 2 164- x⇄y 205- STO 9 246- 1 294- EEX
124- g x≤y 165- + 206- - 247- + 295- 26
125- g GTO 146 166- g x=0 207- x⇄y 248- RCL 9 297- CHS
126- R↓ 167- g GTO 268 208- g x≤y 249- × 298- STO .2
127- x⇄y 168- 1 209- g GTO 221 250- RCL 8 299- 4.47569
128- ÷ 169- g LSTx 210- ENTER 251- + 306- EEX
129- g LSTx 170- - 211- ENTER 252- RCL 6 307- 20
130- x⇄y 171- 1 212- RCL 9 253- g x=0 309- CHS
131- g INTG 172- g LSTx 213- × 254- x⇄y 310- STO .3
132- × 173- + 214- 1 255- x⇄y 311- 5.55391606
133- g x≤y 174- ÷ 215- - 256- - 321- EEX
134- CHS 175- g √ᵡ 216- x⇄y 257- RCL 5 322- 14
135- + 176- g GTO 183 217- RCL 9 258- × 324- CHS
136- g GTO 019 177- x⇄y 218- + 259- RCL 7 325- STO .4
137- x⇄y 178- STO 4 219- ÷ 260- × 326- 3.281837614
138- STO 4 179- x⇄y 220- 3 261- RCL .1 337- EEX
139- x⇄y 180- 1 221- 0 262- ÷ 338- 8
140- ENTER 181- STO 7 222- RCL .1 263- RCL .0 339- CHS
141- g x² 182- x⇄y 223- × 264- × 340- STO .5
142- 1 183- ENTER 224- STO 8 265- RCL 4 341- .0784
143- - 184- g x² 225- x⇄y 266- x⇄y 346- CHS
144- g x=0 185- g √ᵡ 226- STO 9 267- g GTO 000 347- STO .6
145- g GTO 150 186- g x=0 227- g x² 268- RCL 7 348- .110351
146- CHS 187- g GTO 265 228- ENTER 269- g GTO 151 355- STO .7
147- g √ᵡ 188- ÷ 229- ENTER 270- 1 356- .142838
148- ÷ 189- STO 5 230- ENTER 271- g GTO 273 363- STO .8
149- g GTO 180 190- 1 231- RCL .6 272- RCL .1 364- .199999839
150- x⇄y 191- g LSTx 232- × 273- STO .0 374- STO .9
151- 9 192- g x≤y 233- RCL .7 274- R↓ 375- g GTO 270
Usage:
g GTO 276 R/S if the optional steps have been keyed in this will load all the
constants needed by the program into registers R.0 through R.9,
otherwise store them manually:
R.0: 1 (DEG)
R.1: 1.745329252E-02 (pi/180)
R.2: 2.1E-26
R.3: 4.47569E-20
R.4: 5.55391606E-14
R.5: 3.281837614E-08 (sine polynomial coefficients)
R.6: -0.0784
R.7: 0.110351
R.8: 0.142838
R.9: 0.199999839 (arctangent polynomial coefficients)
SIN: R/S
COS: g GTO 090 R/S
TAN: g GTO 100 R/S
ASIN: g GTO 137 R/S
ACOS: g GTO 157 R/S
ATAN: g GTO 177 R/S
DEG: g GTO 270 R/S
RAD: g GTO 272 R/S
GRAD: .9 1/x STO .0
Input ranges:
SIN, COS, TAN: |x| < 1E12 (degrees)
ASIN, ACOS: |x| ≤ 1
ATAN: -1E-50 < x < 1E50
Examples:
First set the display to FIX 9 and DEG mode, if not already set:
f 9
g GTO 270 R/S
1) asin(acos(atan(tan(cos(sin(9))))))
Keystrokes Display
9 9.
R/S 0.156434465
g GTO 090 R/S 0.999996273
g GTO 100 R/S 0.017455000
g GTO 177 R/S 0.999996273
g GTO 157 R/S 0.156434568
g GTO 137 R/S 9.000005947
This is a standard test created by Mike Sebastian to check trigonometric algorithms in calculators (Calculator Forensics).
2) sin²(30) + cos²(30):
Notice that the stack register X is always preserved, so there's no need to store intermediate results in simple
chain calculations (one-level only), as in this example.
Keystrokes Display
30 R/S 0.500000000
g x² 0.250000000
30 g GTO 090 R/S 0.866025404
g x² 0.750000000
+ 1.000000000
3) sin(-1234567.8) + acos(-0.77)
Keystrokes Display
1234567.8 CHS -1,234,567.8
R/S -0.790155012
.77 CHS g GTO 157 R/S 140.3538889
+ 139.5637338
4) tan(-6.2 rad)/asin(0.15 rad)
Set the angular mode to RADIANS:
g GTO 272 R/S
Keystrokes Display
6.2 CHS g GTO 100 R/S 0.083377715
0.15 g GTO 137 R/S 0.150568273
÷ 0.553753545
Go back to DEG mode:
g GTO 270 R/S 0.553753545
Notice that the first example results do not quite match the ones you would get on the classic scientific Voyagers. As a
matter of fact, the final result is even closer to 9: 9.00000594679 (which is rounded to 10 digits to fit in the display).
Unlike the classic Voyagers, the full 12-digit mantissa is not rounded to the number of digits in the display. Since the
HP 12c Platinum has abandoned the old HP rounding philosophy, it does not make much sense to implement this feature,
but we can use the remaining programming space to replicate the original HP rounding method, just for testing purposes:
1) Change the line 267 to g GTO 376:
g GTO 266
f P/R
g GTO 376
f P/R
2) Key in these lines:
376- ENTER
377- g x²
378- g √ᵡ
379- g x=0
380- g GTO 000
381- g LN
382- 1
383- 0
384- g LN
385- ÷
386- g INTG
387- 1
388- -
389- 1
390- 0
391- x⇄y
392- yᵡ
393- ÷
394- g LSTx
395- x⇄y
396- f RND
397- x⇄y
398- ×
399- g GTO 000
This will round the answers to the number of the decimal places of the display plus one.
Let us repeat the first example:
1) asin(acos(atan(tan(cos(sin(9)))))), assuming FIX 9 and DEG mode
Keystrokes Display
9 9.
R/S 0.156434465
g GTO 090 R/S 0.999996273
g GTO 100 R/S 0.017455000
g GTO 177 R/S 0.999996272
g GTO 157 R/S 0.156441660
g GTO 137 R/S 9.000417403
Now all 10-digit results exactly match those of the HP-15C and other HP 10-digit calculators.
Don't forget to revert to the original program by editing the line 267:
g GTO 266
f P/R
g GTO 000
f P/R
Formulae:
\(\sin x =r\left ( 3-4r^{2} \right )\)
where
\(r = x\left (a_{1}+x^{2}\left (a_{2}+x^{2}\left (a_{3}+x^{2}\left (a_{4}+a_{5}x^{2}\right )\right )\right) \right )\)
and where
a₁ = 5.81776417333E-03
a₂ =-3.281837614E-08
a₃ = 5.55391606E-14
a₄ =-4.47569E-20
a₅ = 2.1E-26
x in degrees; |x| ≤ 90 degrees; Max Abs Error < 1.46E-12
\(\arctan x =x\left ( b_{1} + x^{2}\left ( b_{2}+x^{2}\left (b_{3}+x^{2}\left ( b_{4}+x^{2}\left ( b_{5}+b_{6} x^{2}\right ) \right )\right ) \right )\right )\)
where
b₁ = 1
b₂ =-0.333333333333
b₃ = 0.199999839
b₄ =-0.142838
b₅ = 0.110351
b₆ =-0.0784
|x| ≤ \(2-\sqrt{3}\); Max Abs Error < 7.85E-12; results in radians
\(\arctan x =\frac{x}{|x|}\left ( \frac{\pi }{6}+\arctan \frac{|x|\sqrt{3}-1}{|x|+\sqrt{3}} \right )\)
\(2-\sqrt{3}\) < |x| ≤ 1
\(\arctan x =\frac{x}{|x|}\left ( \frac{\pi }{2}-\arctan \frac{1}{|x|} \right )\)
|x| > 1
\(\cos x =\sin \left ( \frac{\pi }{2} - x \right )\)
\(\tan x=\frac{\sin x}{\cos x}\)
\(\arcsin x = |x|\arctan \frac{x}{\sqrt{1-x^{2}}}\)
|x| < 1
\(\arccos x =2\arctan \sqrt{\frac{1-x}{1+x}}\)
-1 < x ≤ 1
001- 2 023- CHS 045- g x≤y 067- / 089- g GTO 265
002- STO 6 024- g x≤y 046- g GTO 017 068- + 090- 2
003- R↓ 025- g GTO 031 047- R↓ 069- RCL 8 091- STO 6
004- RCL .0 026- 2 048- x⇄y 070- × 092- R↓
005- ÷ 027- × 049- STO 8 071- ENTER 093- RCL .0
006- x⇄y 028- x⇄y 050- g x² 072- g x² 094- ÷
007- STO 4 029- - 051- ENTER 073- 4 095- CHS
008- x⇄y 030- ENTER 052- ENTER 074- × 096- 9
009- ENTER 031- R↓ 053- ENTER 075- CHS 097- 0
010- g x² 032- ENTER 054- RCL .2 076- 3 098- +
011- g √ᵡ 033- g x² 055- × 077- + 099- g GTO 006
012- 3 034- g √ᵡ 056- RCL .3 078- × 100- RCL .0
013- 6 035- ENTER 057- - 079- RCL 6 101- ÷
014- 0 036- ENTER 058- × 080- 2 102- STO 4
015- g x≤y 037- 9 059- RCL .4 081- g x≤y 103- x⇄y
016- g GTO 120 038- 0 060- + 082- g GTO 087 104- STO 7
017- R↓ 039- - 061- × 083- R↓ 105- 1
018- R↓ 040- g x=0 062- RCL .5 084- g x=0 106- STO 6
019- 9 041- g GTO 047 063- - 085- g GTO 114 107- RCL 4
020- 0 042- R↓ 064- × 086- g GTO 109 108- g GTO 009
021- g x≤y 043- 9 065- RCL .1 087- R↓ 109- CLx
022- g GTO 026 044- 0 066- 3 088- x⇄y 110- STO 6
111- x⇄y 152- 0 193- g GTO 196 234- + 275- g GTO 000
112- RCL 4 153- × 194- 1/x 235- ×
113- g GTO 095 154- RCL .0 195- 9 236- RCL .8
114- x⇄y 155- × 196- 0 237- -
115- RCL 4 156- g GTO 265 197- RCL .1 238- × optional steps:
116- x⇄y 157- x⇄y 198- × 239- RCL .9
117- ÷ 158- STO 4 199- STO 6 240- + 276- 1.745329252
118- RCL 7 159- x⇄y 200- x⇄y 241- × 287- EEX
119- g GTO 266 160- 2 201- 2 242- 3 288- 2
120- x⇄y 161- STO 7 202- ENTER 243- 1/x 289- CHS
121- EEX 162- R↓ 203- 3 244- - 290- STO .1
122- 1 163- 1 204- g √ᵡ 245- × 291- 2.1
123- 2 164- x⇄y 205- STO 9 246- 1 294- EEX
124- g x≤y 165- + 206- - 247- + 295- 26
125- g GTO 146 166- g x=0 207- x⇄y 248- RCL 9 297- CHS
126- R↓ 167- g GTO 268 208- g x≤y 249- × 298- STO .2
127- x⇄y 168- 1 209- g GTO 221 250- RCL 8 299- 4.47569
128- ÷ 169- g LSTx 210- ENTER 251- + 306- EEX
129- g LSTx 170- - 211- ENTER 252- RCL 6 307- 20
130- x⇄y 171- 1 212- RCL 9 253- g x=0 309- CHS
131- g INTG 172- g LSTx 213- × 254- x⇄y 310- STO .3
132- × 173- + 214- 1 255- x⇄y 311- 5.55391606
133- g x≤y 174- ÷ 215- - 256- - 321- EEX
134- CHS 175- g √ᵡ 216- x⇄y 257- RCL 5 322- 14
135- + 176- g GTO 183 217- RCL 9 258- × 324- CHS
136- g GTO 019 177- x⇄y 218- + 259- RCL 7 325- STO .4
137- x⇄y 178- STO 4 219- ÷ 260- × 326- 3.281837614
138- STO 4 179- x⇄y 220- 3 261- RCL .1 337- EEX
139- x⇄y 180- 1 221- 0 262- ÷ 338- 8
140- ENTER 181- STO 7 222- RCL .1 263- RCL .0 339- CHS
141- g x² 182- x⇄y 223- × 264- × 340- STO .5
142- 1 183- ENTER 224- STO 8 265- RCL 4 341- .0784
143- - 184- g x² 225- x⇄y 266- x⇄y 346- CHS
144- g x=0 185- g √ᵡ 226- STO 9 267- g GTO 000 347- STO .6
145- g GTO 150 186- g x=0 227- g x² 268- RCL 7 348- .110351
146- CHS 187- g GTO 265 228- ENTER 269- g GTO 151 355- STO .7
147- g √ᵡ 188- ÷ 229- ENTER 270- 1 356- .142838
148- ÷ 189- STO 5 230- ENTER 271- g GTO 273 363- STO .8
149- g GTO 180 190- 1 231- RCL .6 272- RCL .1 364- .199999839
150- x⇄y 191- g LSTx 232- × 273- STO .0 374- STO .9
151- 9 192- g x≤y 233- RCL .7 274- R↓ 375- g GTO 270
Usage:
g GTO 276 R/S if the optional steps have been keyed in this will load all the
constants needed by the program into registers R.0 through R.9,
otherwise store them manually:
R.0: 1 (DEG)
R.1: 1.745329252E-02 (pi/180)
R.2: 2.1E-26
R.3: 4.47569E-20
R.4: 5.55391606E-14
R.5: 3.281837614E-08 (sine polynomial coefficients)
R.6: -0.0784
R.7: 0.110351
R.8: 0.142838
R.9: 0.199999839 (arctangent polynomial coefficients)
SIN: R/S
COS: g GTO 090 R/S
TAN: g GTO 100 R/S
ASIN: g GTO 137 R/S
ACOS: g GTO 157 R/S
ATAN: g GTO 177 R/S
DEG: g GTO 270 R/S
RAD: g GTO 272 R/S
GRAD: .9 1/x STO .0
Input ranges:
SIN, COS, TAN: |x| < 1E12 (degrees)
ASIN, ACOS: |x| ≤ 1
ATAN: -1E-50 < x < 1E50
Examples:
First set the display to FIX 9 and DEG mode, if not already set:
f 9
g GTO 270 R/S
1) asin(acos(atan(tan(cos(sin(9))))))
Keystrokes Display
9 9.
R/S 0.156434465
g GTO 090 R/S 0.999996273
g GTO 100 R/S 0.017455000
g GTO 177 R/S 0.999996273
g GTO 157 R/S 0.156434568
g GTO 137 R/S 9.000005947
This is a standard test created by Mike Sebastian to check trigonometric algorithms in calculators (Calculator Forensics).
2) sin²(30) + cos²(30):
Notice that the stack register X is always preserved, so there's no need to store intermediate results in simple
chain calculations (one-level only), as in this example.
Keystrokes Display
30 R/S 0.500000000
g x² 0.250000000
30 g GTO 090 R/S 0.866025404
g x² 0.750000000
+ 1.000000000
3) sin(-1234567.8) + acos(-0.77)
Keystrokes Display
1234567.8 CHS -1,234,567.8
R/S -0.790155012
.77 CHS g GTO 157 R/S 140.3538889
+ 139.5637338
4) tan(-6.2 rad)/asin(0.15 rad)
Set the angular mode to RADIANS:
g GTO 272 R/S
Keystrokes Display
6.2 CHS g GTO 100 R/S 0.083377715
0.15 g GTO 137 R/S 0.150568273
÷ 0.553753545
Go back to DEG mode:
g GTO 270 R/S 0.553753545
Notice that the first example results do not quite match the ones you would get on the classic scientific Voyagers. As a
matter of fact, the final result is even closer to 9: 9.00000594679 (which is rounded to 10 digits to fit in the display).
Unlike the classic Voyagers, the full 12-digit mantissa is not rounded to the number of digits in the display. Since the
HP 12c Platinum has abandoned the old HP rounding philosophy, it does not make much sense to implement this feature,
but we can use the remaining programming space to replicate the original HP rounding method, just for testing purposes:
1) Change the line 267 to g GTO 376:
g GTO 266
f P/R
g GTO 376
f P/R
2) Key in these lines:
376- ENTER
377- g x²
378- g √ᵡ
379- g x=0
380- g GTO 000
381- g LN
382- 1
383- 0
384- g LN
385- ÷
386- g INTG
387- 1
388- -
389- 1
390- 0
391- x⇄y
392- yᵡ
393- ÷
394- g LSTx
395- x⇄y
396- f RND
397- x⇄y
398- ×
399- g GTO 000
This will round the answers to the number of the decimal places of the display plus one.
Let us repeat the first example:
1) asin(acos(atan(tan(cos(sin(9)))))), assuming FIX 9 and DEG mode
Keystrokes Display
9 9.
R/S 0.156434465
g GTO 090 R/S 0.999996273
g GTO 100 R/S 0.017455000
g GTO 177 R/S 0.999996272
g GTO 157 R/S 0.156441660
g GTO 137 R/S 9.000417403
Now all 10-digit results exactly match those of the HP-15C and other HP 10-digit calculators.
Don't forget to revert to the original program by editing the line 267:
g GTO 266
f P/R
g GTO 000
f P/R
Formulae:
\(\sin x =r\left ( 3-4r^{2} \right )\)
where
\(r = x\left (a_{1}+x^{2}\left (a_{2}+x^{2}\left (a_{3}+x^{2}\left (a_{4}+a_{5}x^{2}\right )\right )\right) \right )\)
and where
a₁ = 5.81776417333E-03
a₂ =-3.281837614E-08
a₃ = 5.55391606E-14
a₄ =-4.47569E-20
a₅ = 2.1E-26
x in degrees; |x| ≤ 90 degrees; Max Abs Error < 1.46E-12
\(\arctan x =x\left ( b_{1} + x^{2}\left ( b_{2}+x^{2}\left (b_{3}+x^{2}\left ( b_{4}+x^{2}\left ( b_{5}+b_{6} x^{2}\right ) \right )\right ) \right )\right )\)
where
b₁ = 1
b₂ =-0.333333333333
b₃ = 0.199999839
b₄ =-0.142838
b₅ = 0.110351
b₆ =-0.0784
|x| ≤ \(2-\sqrt{3}\); Max Abs Error < 7.85E-12; results in radians
\(\arctan x =\frac{x}{|x|}\left ( \frac{\pi }{6}+\arctan \frac{|x|\sqrt{3}-1}{|x|+\sqrt{3}} \right )\)
\(2-\sqrt{3}\) < |x| ≤ 1
\(\arctan x =\frac{x}{|x|}\left ( \frac{\pi }{2}-\arctan \frac{1}{|x|} \right )\)
|x| > 1
\(\cos x =\sin \left ( \frac{\pi }{2} - x \right )\)
\(\tan x=\frac{\sin x}{\cos x}\)
\(\arcsin x = |x|\arctan \frac{x}{\sqrt{1-x^{2}}}\)
|x| < 1
\(\arccos x =2\arctan \sqrt{\frac{1-x}{1+x}}\)
-1 < x ≤ 1