HP15c program: convert a floating point number into a fraction (numerator and denominator)
command display
f LBL E 001-42,21,15
g ABS 002-43 16
STO . 2 003-44 .2
1 004- 1
STO . 3 005-44 .3
f LBL 9 006-42,21, 9
R_arrow_down 007- 33
1/x 008- 15
STO * . 3 009-44,20,.3
Enter 010- 36
g INT 011-43 44
- (minus) 012- 30
4 013- 4
CHS 014- 16
10^x 015- 13
g x<=y 016-43 10
GTO 9 017- 22 9
RCL . 2 018-45 .2
RCL . 3 019-45 .3
g INT 020-43 44
* (multiply) 021- 20
f PSE 022-42 31
g LST X 023-43 36
g RTN 024- 43 32
This program uses the following labels: LBL E and LBL 9
This program uses the following registers (STO/RCL): .2 and .3
Using the program
I start every program with a label. This way you can have a number
of programs in your 15c and you just select which one to run by pressing f LABELNAME (f E in this case) or GSB LABELNAME (GSB E in this case).
Let's say you would like to know what 0.15625 as a fraction is.
You type: 0.15625, GSB E
The display shows "running" and then you see first 5 and ten sec later 32.
The fraction is therefore 5/32 (numerator=5 and denominator=32). 32 remains in X (display) after the program
finished and 5 remains in Y (use the swap key, "x><y", to see it).
Note that this program shows the resulting fraction always with positive numbers. That is: both 0.15625 and -0.15625 will result in 5/32. An extra step could be
added to add the sign at the end but that would make the program longer and it's not really needed.
Algorithm
0.15625 -> 1/0.15625 = 6.4
take off the integer part: 6.4 - 6=0.4
0.4 -> 1/0.4 = 2.5
take off the integer part: 2.5 -2 =0.5
0.5 -> 1/0.5 = 2
take off the integer part: 2-2=0
0 -> end of program
denominator = 6.4 * 2.5 * 2 = 32
numerator = 0.15625 * denominator = 0.15625 * 32 = 5
HP11C
You can use this program on a HP11C with some small adaptations:
- Use STO 3 instead of STO . 3 because storage register arithmetic is only supported on registers 0 to 9.
- The comparison and branch operation "g x<=y" is found on the HP11C above the divide button: f x<=y
Example
Calculate the following and show the result as a fraction (not a floating point number):
4 7 5
--- + --- - ----
3 5 12
Solution:
4, Enter, 3, ÷, 7, Enter, 5, ÷, +, 5, Enter, 12, ÷ -
The display shows now: 2.316666....
Press GSB E to convert this into a fraction: 139/60
© Guido Socher