home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (c) 1993 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;
- }
-
-
- global lib_debug;
- if (lib_debug >= 0) {
- print "unitfrac(x) defined";
- }
-