[hp15c]

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

Re-number program code starting with line number:

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:
  1. Use STO 3 instead of STO . 3 because storage register arithmetic is only supported on registers 0 to 9.
  2. 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