Files
calc/lib/unitfrac.cal
2017-05-21 15:38:36 -07:00

30 lines
762 B
Plaintext

/*
* Copyright (c) 1995 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
*
* Represent a fraction as sum of distinct unit fractions.
* The output is the unit fractions themselves, and in square brackets,
* the number of digits in the numerator and denominator of the value left
* to be found. Numbers larger than 3.5 become very difficult to calculate.
*/
define unitfrac(x)
{
local d, di, n;
if (x <= 0)
quit "Non-positive argument";
d = 2;
do {
n = int(1 / x) + 1;
if (n > d)
d = n;
di = 1/d;
print ' [': digits(num(x)): '/': digits(den(x)): ']',, di;
x -= di;
d++;
} while ((num(x) > 1) || (x == di) || (x == 1));
print ' [1/1]',, x;
}