(User.programs) Item: 211 by _tasmith at hpcvbbs.UUCP Author: [Ted A Smith] Subj: Rational number package Date: Wed Feb 06 1991 20:21 [Note: On this disk, RATPAC is a directory object, and RATPAC.LIB is a library object. They have the same functionality. -jkh-] Here is a rational math package: QAdd Add two numbers QSub Subtract QMul Multiply QDiv Divide QNeg Negate QInv Reciprocate Q->I Convert a number to an integer Q->F Convert a number to a continued fraction QF-> Convert a continued fraction to a number ->NUM Convert a number to a real CST will be a menu. Input numbers may be real or rationals. Rationals are represented as 'i+n/d' or 'n/d', e.g. 5 2 QDiv ==> '5/2' '5/2' 2 QAdd ==> '4+1/2' I took reasonable care to preserve high accuracy. I don't have a clue what possesed me to write this. There isn't near enough error checking on input expressions. P.S. By truncating a continued fraction you can get the 'best' approximation to your input number with a denominator <= the resultant denominator. E.g. 'Pi' ->NUM ==> 3.14159265359 3.14159265359 Q->F ==> { 3 7 15 1 292 1 1 3 } { 3 7 15 1 292 1 1 3 } QF-> ==> 3.14159265359 { 3 7 15 1 } QF-> ==> '355/113' { 3 7 } QF-> ==> '22/7' [Note: By decrementing (not dropping) the last number in the list, you reduce the resulting fraction by the smallest possible amount. This fact is what makes the DEC2FRAC program work. Number theory buffs will enjoy taking successive results from DEC2FRAC and feeding them to Ted's Q->F function. -jkh-]