Weblog

Calculating Fractions with Free42 / DM42

The program uses mainly the stack to do all calculations. It makes heavily use of the Free42 FUNC statement to preserve the stack after usage. I used version 3.03 of free42.

Usage

You can either enter the values like this

numerator ENTER denominator ENTER
numerator ENTER denominator 
XEQ function

or like this

numerator ENTER denominator COMPLEX 
numerator ENTER denominator  COMPLEX
XEQ function

The way the return values are shown depends on the way you've entered the input values: as X/Y value in the first version on the stack or as a "complex" in the X xstack in the second

Functions

Use XEQ "Frac" to start the program and display the menu.

"Q+", "Q-", "Q×",  "Q÷" do exaclty what their name implies.

"Qreduc" reduces a fraction.

"Qshow" displays a pretty printed version of a fraction in the ALPHA register.

Program:

Click here to download the fractions.raw file.

00 { 532-Byte Prgm }
01▸LBL "GCD"
02 FUNC 21
03 ABS
04 X<>Y
05 ABS
06 X>Y?
07 X<>Y
08▸LBL 06
09 MOD
10 LASTX
11 X<>Y
12 X≠0?
13 GTO 06
14 X<>Y
15 RTN
16▸LBL "Qreduc"
17 CF 02
18 CPX?
19 SF 02
20 FC? 02
21 FUNC 22
22 FS? 02
23 FUNC 11
24 FS? 02
25 COMPLEX
26 XEQ "Qsign"
27 STO ST T
28 X<>Y
29 X=0?
30 GTO 01
31 STO ST Z
32 XEQ "GCD"
33 ÷
34 X<>Y
35 LASTX
36 ÷
37 FS?C 02
38 COMPLEX
39 RTN
40▸LBL 01
41 0
42 1
43 FS?C 02
44 COMPLEX
45 RTN
46▸LBL "Q×"
47 CF 02
48 CPX?
49 SF 02
50 FC? 02
51 FUNC 22
52 FS? 02
53 FUNC 21
54 FS? 02
55 XEQ 99
56 RCL× ST Z
57 X<>Y
58 RCL× ST T
59 X<>Y
60 FS?C 02
61 COMPLEX
62 XEQ "Qreduc"
63 RTN
64▸LBL 99
65 X<>Y
66 COMPLEX
67 RCL ST Z
68 COMPLEX
69 RTN
70▸LBL "Q÷"
71 CF 03
72 CPX?
73 SF 03
74 FC? 03
75 FUNC 22
76 FS? 03
77 FUNC 21
78 FS? 03
79 XEQ 99
80 X<>Y
81 XEQ "Q×"
82 FS?C 03
83 COMPLEX
84 RTN
85▸LBL "Q+"
86 CF 03
87 CPX?
88 SF 03
89 FC? 03
90 FUNC 22
91 FS? 03
92 FUNC 21
93 FS? 03
94 XEQ 99
95 R↓
96 R↓
97 XEQ "Qreduc"
98 LSTO "D"
99 R↑
100 R↑
101 XEQ "Qreduc"
102 STO× ST Z
103 STO× ST T
104 RCL× "D"
105 X<>Y
106 RCL× "D"
107 RCL+ ST T
108 X<>Y
109 XEQ "Qreduc"
110 FS?C 03
111 COMPLEX
112 RTN
113▸LBL "Q-"
114 CF 04
115 CPX?
116 SF 04
117 FC? 04
118 FUNC 22
119 FS? 04
120 FUNC 21
121 FS? 04
122 XEQ 99
123 +/-
124 XEQ "Q+"
125 FS?C 04
126 COMPLEX
127 RTN
128▸LBL "Qsign"
129 FUNC 22
130 RCL ST Y
131 RCL ST Y
132 ÷
133 SIGN
134 RCL ST Z
135 ABS
136 ×
137 RCL ST Y
138 ABS
139 RTN
140▸LBL "Qshow"
141 FUNC 00
142 CPX?
143 COMPLEX
144 "0"
145 X<>Y
146 X=0?
147 GTO 04
148 X<>Y
149 CLA
150 RCL ST Y
151 RCL ST Y
152 ÷
153 X<0?
154 XEQ 03
155 IP
156 X≠0?
157 AIP
158 X≠0?
159 ├" "
160 R↓
161 ABS
162 X<>Y
163 ABS
164 X<>Y
165 MOD
166 X=0?
167 GTO 04
168 AIP
169 ├"/"
170 LASTX
171 AIP
172▸LBL 04
173 AVIEW
174 RTN
175▸LBL 03
176 "-"
177 ABS
178 RTN
179▸LBL "Fract"
180▸LBL 00
181 CLMENU
182 "Q+"
183 KEY 1 XEQ "Q+"
184 "Q-"
185 KEY 2 XEQ "Q-"
186 "Q×"
187 KEY 3 XEQ "Q×"
188 "Q÷"
189 KEY 4 XEQ "Q÷"
190 "Qreduc"
191 KEY 5 XEQ "Qreduc"
192 "Qshow"
193 KEY 6 XEQ "Qshow"
194 KEY 7 GTO 02
195 KEY 8 GTO 02
196 KEY 9 GTO 05
197 MENU
198 RTN
199 GTO 00
200▸LBL 02
201 CLMENU
202 "Qsign"
203 KEY 1 XEQ "Qsign"
204 "GCD"
205 KEY 6 XEQ "GCD"
206 KEY 7 GTO 00
207 KEY 8 GTO 00
208 KEY 9 GTO 05
209 MENU
210 STOP
211 GTO 02
212▸LBL 05
213 RTN
214 END

Disclaimer

This program is provided by Juergen Keil "as is" and "with all faults." Juergen Keil makes no representations or warranties of any kind concerning the safety, suitability, lack of viruses, inaccuracies, typographical errors, or other harmful components of this software.

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more  Got it