EXC/ x<>Rn for stack efficiency
06-27-2017, 09:42 PM (This post was last modified: 06-27-2017 09:46 PM by Matt Agajanian.)
Post: #41
 Matt Agajanian Senior Member Posts: 637 Joined: Dec 2013
RE: EXC/ x<>Rn for stack efficiency
Quote:Herman the moonshiner

But HP had better names, whose sly humor made them memorable, at least to native English speakers.

Arctic explorer Jean-Claude Coulaire
Logistics specialist Justin Tyme

(I confess I made up that last one, but it's exactly in the HP style.)

Yea, these were what added to the fun & enjoyment of learning how to use our HP calculators.

On another note, as advanced and to compete with the SR-52, I wonder why HP did not include an EXC function on the 67, but waited until the HP-41.
06-28-2017, 12:42 AM (This post was last modified: 06-28-2017 12:43 AM by Thomas Okken.)
Post: #42
 Thomas Okken Senior Member Posts: 1,777 Joined: Feb 2014
RE: EXC/ x<>Rn for stack efficiency
(06-27-2017 09:42 PM)Matt Agajanian Wrote:
(06-19-2017 05:44 PM)GrampaDave Wrote:  But HP had better names, whose sly humor made them memorable, at least to native English speakers.

Arctic explorer Jean-Claude Coulaire
Logistics specialist Justin Tyme

(I confess I made up that last one, but it's exactly in the HP style.)

Yea, these were what added to the fun & enjoyment of learning how to use our HP calculators.

On another note, as advanced and to compete with the SR-52, I wonder why HP did not include an EXC function on the 67, but waited until the HP-41.

Because the HP-67 had "merged keystrokes," meaning every instruction was one byte. PANAMATIK posted this very enlightening link the other day: http://www.panamatik.de/ProgramCodes.pdf

With the HP-41C, HP let go of the one-byte-per-instruction thing, and that enabled them to do what TI was doing, i.e. allow register numbers from 00 to 99, and add new functions like EXC a.k.a. X<>.

In the HP-42S, they took this even further, adding RCL+ etc., and alphanumeric variable names.
06-28-2017, 01:37 AM (This post was last modified: 06-28-2017 01:57 AM by Matt Agajanian.)
Post: #43
 Matt Agajanian Senior Member Posts: 637 Joined: Dec 2013
RE: EXC/ x<>Rn for stack efficiency
Yes, I saw that table when it was posted. Maybe I'm missing something in your explanation. How would [f] [x<>] n (or [x<>] n) consume more than one/two bytes? HP had room for [STO] +, -, x, / n. So. wouldn't the exchange function consume one/two bytes?

Okay, upon inspecting the HP-67 table, I think I see what you're saying.

Each instruction had to be given a one-byte hex code. After all was said and done, if I read the 67 table correctly, there are only four vacant spaces. So, there was no way to give 11 (0-9, (i) ) op codes for register exchange functionality. And, limiting exchange to four registers doesn't make sense. Right?
07-20-2022, 07:03 PM
Post: #44
 Thomas Klemm Senior Member Posts: 1,711 Joined: Dec 2013
RE: EXC/ x<>Rn for stack efficiency
This looks like an XY problem to me.
Here is a program to calculate the great circle distance between two points A and B on a sphere.
Since no registers are used, the initial question X is not relevant.
All you ever wanted is a solution for Y.

Program

This program works for most HP calculators:

HP-25
Code:
01: 21       : x<->y 02: 22       : Rv 03: 41       : - 04: 14 05    : f COS 05: 21       : x<->y 06: 01       : 1 07: 14 09    : f ->R 08: 21       : x<->y 09: 22       : Rv 10: 61       : * 11: 21       : x<->y 12: 01       : 1 13: 14 09    : f ->R 14: 21       : x<->y 15: 22       : Rv 16: 61       : * 17: 22       : Rv 18: 61       : * 19: 21       : x<->y 20: 22       : Rv 21: 51       : + 22: 15 05    : g COS-1

HP-15C
Code:
   001 {          34 } x↔y    002 {          33 } R⬇    003 {          30 } −    004 {          24 } COS    005 {          34 } x↔y    006 {           1 } 1    007 {       42  1 } f → R    008 {          34 } x↔y    009 {          33 } R⬇    010 {          20 } ×    011 {          34 } x↔y    012 {           1 } 1    013 {       42  1 } f → R    014 {          34 } x↔y    015 {          33 } R⬇    016 {          20 } ×    017 {          33 } R⬇    018 {          20 } ×    019 {          34 } x↔y    020 {          33 } R⬇    021 {          40 } +    022 {       43 24 } g COS⁻¹

HP-42S
Code:
00 { 24-Byte Prgm } 01 X<>Y 02 R↓ 03 - 04 COS 05 X<>Y 06 1 07 →REC 08 X<>Y 09 R↓ 10 × 11 X<>Y 12 1 13 →REC 14 X<>Y 15 R↓ 16 × 17 R↓ 18 × 19 X<>Y 20 R↓ 21 + 22 ACOS 23 END

Example

This is the example provided for the SR-56:

Point A: $$33^\circ 54.5'$$ N, $$94^\circ 56.2'$$ W
Point B: $$33^\circ 59.6'$$ S, $$151^\circ 25.6'$$ E

DEG

33.5430 →HR
33.908333

94.5612 →HR
94.936667

-33.5936 →HR
-33.993333

-151.2536 →HR
-151.426667

R/S
125.999888

If we want to get the result in nautical miles we can multiply the result by 60:

60
×

7559.993276

Or then we could convert degrees to radians and multiply the result by earth's radius.

Formula

(06-15-2017 10:29 AM)Paul Dale Wrote:  It ought to be possible to calculate the distance using the modified Vincenty formula on the 25:

These programs use the same formula as the original program for the SR-56:

$$\Delta \sigma =\arccos \left ( \sin \phi _{1}\sin \phi _{2}+\cos \phi _{1}\cos \phi _{2}\cos(\Delta \lambda ) \right )$$

Conversion

(06-15-2017 09:01 AM)Dieter Wrote:  This will for instance show that the complete routine in the first steps (which is called several times as SBR 00) is obsolete since it does a simple d.ms to decimal degrees conversion (e.g. it turns 42°50' into 42,8333°). The 25 and 33 have a dedicated function for this.

Well, not exactly.
Therefore we have to convert e.g. $$94^\circ {56.2}'$$ to $$94^\circ {56}' {12}''$$ in our heads.

References
The original link to this document appears to be broken.

(06-15-2017 09:01 AM)Dieter Wrote:  But I am sure that HP25 great circle programs already exist. ;-)
Cf. Programs/Library1/HP25-AP24.25:
Code:
01: 24 00    : RCL 0 02: 14 04    : f SIN 03: 24 01    : RCL 1 04: 14 04    : f SIN 05: 61       : * 06: 24 00    : RCL 0 07: 14 05    : f COS 08: 24 01    : RCL 1 09: 14 05    : f COS 10: 61       : * 11: 24 02    : RCL 2 12: 14 05    : f COS 13: 61       : * 14: 51       : + 15: 23 03    : STO 3 16: 15 05    : g COS-1 17: 23 04    : STO 4 18: 06       : 6 19: 00       : 0 20: 61       : * 21: 74       : R/S 22: 24 01    : RCL 1 23: 14 04    : f SIN 24: 24 00    : RCL 0 25: 14 04    : f SIN 26: 24 03    : RCL 3 27: 61       : * 28: 41       : - 29: 24 00    : RCL 0 30: 14 05    : f COS 31: 71       : / 32: 24 04    : RCL 4 33: 14 04    : f SIN 34: 71       : / 35: 15 05    : g COS-1 36: 24 02    : RCL 2 37: 14 04    : f SIN 38: 15 41    : g x<0 39: 13 47    : GTO 47 40: 22       : Rv 41: 03       : 3 42: 06       : 6 43: 00       : 0 44: 21       : x<->y 45: 41       : - 46: 13 00    : GTO 00 47: 22       : Rv 48: 13 00    : GTO 00 49: 13 00    : GTO 00
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)