(02-04-2015 06:52 AM)Katie Wasserman Wrote: A lot of this is fluff but not all, William Kahan has some papers on this site. For example this one on rational arithmetic in floating point. He gives programs for the 67/97 and the 71b and mentions the 15C and 41C.
Thanks for sharing the paper.
Cheers
Thomas
Usage:
Code:
The stack holds four integers X, Y, Z, T construed as two rational numbers Y/X and T/Z ,
both presumed to be in lowest terms (ilt). If not, pressing [E] will reduce Y/X to lowest
terms while leaving T/Z unchanged. The four rational operations are performed by pressing one of
the keys [A], [B], [C], [D] to invoke reliable programs, or [a], [b], [c], [d] to invoke obvious
programs. The reliable programs accept integers as large as 1,999,999,999 and deliver exactly
correct results up to 8,000,000,000 . Specifically, the programs ...
Add: Press [A] or [a] to put Y/X := (T/Z) + (Y/X) ilt, leaving T/Z unchanged.
Subtract: Press [B] or [b] to put Y/X := (T/Z) - (Y/X) ilt, leaving T/Z unchanged.
Multiply: Press [C] or [c] to put Y/X := (T/Z) * (Y/X) ilt, leaving T/Z unchanged.
Divide: Press [D] or [d] to put Y/X := (T/Z) / (Y/X) ilt, leaving T/Z unchanged.
Reduce: Press [E] to put Y/X := (Y/X) ilt, leaving T/Z unchanged.
GCD: Press [e] to put X := Greatest Common Divisor of X and Y .
REM: Press [GSB] [8] to put X := Y - nX and n : = Integer nearest Y/X into reg. 8 .
The programs use registers 0 to 8 and I, and labels 2 to 8 too.
Example:
\(\frac{123,456,799}{123,456}-\frac{988,297,396}{988,291}=\frac{31}{189751872}\)
1234 56799.
[ENTER↑]
123456.
[ENTER↑]
9882 97396.
[ENTER↑]
988291.
\([\)B]
1897 51872.
[x<>y]
31.
Program:
Code:
001: 31 25 11 ; LBL A
002: 42 ; CHS
003: 31 25 12 ; LBL B
004: 31 22 07 ; GSB 7
005: 35 52 ; X<>Y
006: 35 54 ; R^
007: 33 04 ; STO 4
008: 32 22 15 ; GSB e
009: 31 51 ; X=0?
010: 43 ; EEX
011: 33 05 ; STO 5
012: 33 81 00 ; STO/ 0
013: 33 81 04 ; STO/ 4
014: 34 01 ; RCL 1
015: 35 52 ; X<>Y
016: 31 22 08 ; GSB 8
017: 34 04 ; RCL 4
018: 71 ; *
019: 33 06 ; STO 6
020: 34 03 ; RCL 3
021: 35 54 ; R^
022: 31 22 08 ; GSB 8
023: 34 00 ; RCL 0
024: 33 07 ; STO 7
025: 71 ; *
026: 34 06 ; RCL 6
027: 51 ; -
028: 32 22 15 ; GSB e
029: 33 81 05 ; STO/ 5
030: 34 01 ; RCL 1
031: 35 52 ; X<>Y
032: 31 22 08 ; GSB 8
033: 34 04 ; RCL 4
034: 33 71 00 ; STO* 0
035: 71 ; *
036: 33 01 ; STO 1
037: 34 08 ; RCL 8
038: 33 06 ; STO 6
039: 34 03 ; RCL 3
040: 35 54 ; R^
041: 31 22 08 ; GSB 8
042: 34 07 ; RCL 7
043: 71 ; *
044: 34 01 ; RCL 1
045: 51 ; -
046: 35 52 ; X<>Y
047: 81 ; /
048: 33 01 ; STO 1
049: 34 05 ; RCL 5
050: 33 71 00 ; STO* 0
051: 34 08 ; RCL 8
052: 33 05 ; STO 5
053: 31 25 05 ; LBL 5
054: 34 06 ; RCL 6
055: 34 04 ; RCL 4
056: 71 ; *
057: 41 ; ENTER
058: 41 ; ENTER
059: 34 05 ; RCL 5
060: 34 07 ; RCL 7
061: 71 ; *
062: 71 ; *
063: 43 ; EEX
064: 01 ; 1
065: 00 ; 0
066: 32 81 ; X>Y?
067: 22 04 ; GTO 4
068: 34 06 ; RCL 6
069: 35 64 ; ABS
070: 34 04 ; RCL 4
071: 35 64 ; ABS
072: 32 71 ; X<=Y?
073: 22 03 ; GTO 3
074: 35 82 ; LASTX
075: 34 06 ; RCL 6
076: 33 04 ; STO 4
077: 35 52 ; X<>Y
078: 33 06 ; STO 6
079: 31 25 03 ; LBL 3
080: 34 05 ; RCL 5
081: 35 64 ; ABS
082: 34 07 ; RCL 7
083: 35 64 ; ABS
084: 32 71 ; X<=Y?
085: 22 03 ; GTO 3
086: 35 82 ; LASTX
087: 34 05 ; RCL 5
088: 33 07 ; STO 7
089: 35 52 ; X<>Y
090: 33 05 ; STO 5
091: 31 25 03 ; LBL 3
092: 34 07 ; RCL 7
093: 35 64 ; ABS
094: 34 04 ; RCL 4
095: 35 64 ; ABS
096: 32 71 ; X<=Y?
097: 22 03 ; GTO 3
098: 34 06 ; RCL 6
099: 34 07 ; RCL 7
100: 31 22 08 ; GSB 8
101: 33 06 ; STO 6
102: 34 04 ; RCL 4
103: 34 08 ; RCL 8
104: 71 ; *
105: 33 51 05 ; STO- 5
106: 22 05 ; GTO 5
107: 31 25 03 ; LBL 3
108: 34 05 ; RCL 5
109: 34 04 ; RCL 4
110: 31 22 08 ; GSB 8
111: 33 05 ; STO 5
112: 34 07 ; RCL 7
113: 34 08 ; RCL 8
114: 71 ; *
115: 33 51 06 ; STO- 6
116: 22 05 ; GTO 5
117: 31 25 04 ; LBL 4
118: 35 82 ; LASTX
119: 35 54 ; R^
120: 51 ; -
121: 33 61 01 ; STO+ 1
122: 22 06 ; GTO 6
123: 32 25 15 ; LBL e
124: 03 ; 3
125: 42 ; CHS
126: 35 33 ; STO I
127: 35 53 ; RDN
128: 31 51 ; X=0?
129: 22 02 ; GTO 2
130: 31 22 08 ; GSB 8
131: 22 24 ; GTO (i)
132: 31 25 08 ; LBL 8
133: 33 08 ; STO 8
134: 35 52 ; X<>Y
135: 41 ; ENTER
136: 41 ; ENTER
137: 34 08 ; RCL 8
138: 81 ; /
139: 23 00 ; DSP 0
140: 31 24 ; RND
141: 33 08 ; STO 8
142: 35 54 ; R^
143: 71 ; *
144: 51 ; -
145: 35 22 ; RTN
146: 31 25 02 ; LBL 2
147: 35 52 ; X<>Y
148: 35 64 ; ABS
149: 35 22 ; RTN
150: 31 25 07 ; LBL 7
151: 33 00 ; STO 0
152: 35 53 ; RDN
153: 33 01 ; STO 1
154: 35 53 ; RDN
155: 33 02 ; STO 2
156: 35 53 ; RDN
157: 33 03 ; STO 3
158: 35 22 ; RTN
159: 31 25 15 ; LBL E
160: 31 22 07 ; GSB 7
161: 35 53 ; RDN
162: 32 22 15 ; GSB e
163: 31 51 ; X=0?
164: 22 06 ; GTO 6
165: 33 81 00 ; STO/ 0
166: 33 81 01 ; STO/ 1
167: 31 25 06 ; LBL 6
168: 34 03 ; RCL 3
169: 34 02 ; RCL 2
170: 34 01 ; RCL 1
171: 34 00 ; RCL 0
172: 31 81 ; X>0?
173: 35 22 ; RTN
174: 42 ; CHS
175: 35 52 ; X<>Y
176: 42 ; CHS
177: 35 52 ; X<>Y
178: 35 22 ; RTN
179: 31 25 14 ; LBL D
180: 35 52 ; X<>Y
181: 31 25 13 ; LBL C
182: 31 22 07 ; GSB 7
183: 33 04 ; STO 4
184: 32 22 15 ; GSB e
185: 31 61 ; X#0?
186: 33 81 00 ; STO/ 0
187: 31 61 ; X#0?
188: 33 81 04 ; STO/ 4
189: 34 01 ; RCL 1
190: 34 02 ; RCL 2
191: 32 22 15 ; GSB e
192: 31 61 ; X#0?
193: 33 81 01 ; STO/ 1
194: 34 02 ; RCL 2
195: 35 52 ; X<>Y
196: 31 61 ; X#0?
197: 81 ; /
198: 00 ; ST0* 0
199: 34 04 ; RCL 4
200: 33 71 01 ; STO* 1
201: 22 06 ; GTO 6
202: 32 25 11 ; LBL a
203: 42 ; CHS
204: 32 25 12 ; LBL b
205: 31 22 07 ; GSB 7
206: 71 ; *
207: 35 52 ; X<>Y
208: 35 54 ; R^
209: 33 71 00 ; STO* 0
210: 71 ; *
211: 51 ; -
212: 33 01 ; STO 1
213: 31 22 06 ; GSB 6
214: 22 15 ; GTO E
215: 32 25 14 ; LBL d
216: 35 52 ; X<>Y
217: 32 25 13 ; LBL c
218: 31 22 07 ; GSB 7
219: 33 71 01 ; STO* 1
220: 35 54 ; R^
221: 33 71 00 ; STO* 0
222: 31 22 06 ; GSB 6
223: 22 15 ; GTO E
Cards for Jacques Laporte's HP-67 Emulator:
Code:
0 0 0 0 0 0 0
3 0 0 0 2 2 2
9 4 4 7 3 0 b
7 f b 1 c f a
7 1 8 4 8 0 9
5 1 d 5 4 a e
4 7 7 3 9 6 3
9 7 4 b 8 3 0
8 5 a e 3 8 3
9 9 7 7 0 b 8
9 1 3 9 e 0 7
4 b 8 3 0 7 1
3 9 7 7 b 8 4
7 7 3 9 6 7 8
e 0 7 5 9 1 1
e 3 0 3 8 7 1
1 b 3 9 7 4 7
6 f 5 9 5 7 8
1 1 1 d 3 9 3
9 7 7 7 5 1 b
2 6 7 4 2 6 7
6 d 4 5 2 1 0
9 6 3 0 9 4 7
6 4 3 d 3 5 7
d 3 5 7 2 6 7
7 2 6 7 5 f 3
7 7 f 3 9 5 3
0 9 7 7 5 4 3
7 7 7 6 d 3 5
7 2 6 7 4 2 6
d 5 a 5 3 9 7
8 7 4 9 6 b 8
7 8 7 7 9 5 b
8 7 4 7 5 f 3
2 5 2 1 f 0 c
Code:
0 0 0 0 0 0 0
4 0 0 0 2 2 2
3 8 4 7 4 3 f
4 d 5 a 6 3 9
3 1 9 f 1 c 1
3 e e d 6 c 1
3 0 9 8 f 8 d
f b 8 d 2 5 4
9 8 2 e 6 0 1
e 7 8 1 b 1 b
2 6 3 0 f 2 0
e 3 8 3 9 4 7
9 2 3 1 9 1 3
1 9 0 f 7 0 e
a e 3 1 b 7 f
e 0 e 9 3 3 1
7 2 7 3 f 6 8
1 8 0 d 6 5 4
1 c 3 0 1 c 0
e 5 5 7 0 7 1
9 4 b 7 f c 3
0 f d 0 e 3 0
7 2 7 1 8 4 5
3 8 0 5 3 a e
1 e 5 3 3 0 7
2 8 1 5 3 a e
e b 1 c e a d
6 e 1 7 4 e 0
3 8 3 9 e 0 4
7 3 0 3 9 b 7
b 7 f c 3 0 e
d d e b 6 9 1
0 0 0 0 d e b
6 e 0 4 7 e 1
4 f e 4 2 8 c