<> <> <> <> <> DIRECTORY Basics USING [Comparison], Rope USING [ROPE]; BigCardinals: CEDAR DEFINITIONS = BEGIN <> <> BigCARD: TYPE = RECORD [size: CARDINAL _ 0, contents: REF BigCARDRec _ NIL]; BigCARDRec: TYPE = RECORD [SEQUENCE max: CARDINAL OF CARDINAL]; <> Zero: BigCARD = [0, NIL]; <> <<>> BigFail: ERROR [subclass: ATOM _ $Unspecified]; <> <> BigAdd: PROC [in1, in2: BigCARD] RETURNS [BigCARD]; BigSubtract: PROC [large, small: BigCARD, reuse: BOOL _ FALSE] RETURNS [BigCARD]; <> <> BigMultiply: PROC [in1, in2: BigCARD] RETURNS [BigCARD]; BigDivMod: PROC [num, den: BigCARD, reuse: BOOL _ FALSE] RETURNS [quo, rem: BigCARD]; <> <> <> <> BigFromDecimalRope: PROC [in: Rope.ROPE] RETURNS [BigCARD]; BigFromHexRope: PROC [in: Rope.ROPE] RETURNS [BigCARD]; BigToDecimalRope: PROC [in: BigCARD, reuse: BOOL _ FALSE] RETURNS [Rope.ROPE]; BigToHexRope: PROC [in: BigCARD, reuse: BOOL _ FALSE] RETURNS [Rope.ROPE]; <> BigFromRope: PROC[in: Rope.ROPE] RETURNS [out: BigCARD]; BigToRope: PROC [in: BigCARD] RETURNS [out: Rope.ROPE]; BigFromSmall: PROC [in: CARDINAL] RETURNS [BigCARD]; BigToSmall: PROC [in: BigCARD] RETURNS [CARDINAL]; <> <<>> BigFromCard: PROC [in: CARD] RETURNS [BigCARD]; BigToCard: PROC [in: BigCARD] RETURNS [CARD]; <> <> BigCopy: PROC [in: BigCARD] RETURNS [BigCARD]; <> <> BigCompare: PROC [in1, in2: BigCARD] RETURNS [Basics.Comparison]; <> BigZero: PROC [in: BigCARD] RETURNS [BOOL]; BigOdd: PROC [in: BigCARD] RETURNS [BOOL]; <> MultiplyByDigit: PROC [big: BigCARD, small: CARDINAL, reuse: BOOL _ FALSE] RETURNS [BigCARD]; <> TwoToTheNth: PROC [n: CARDINAL] RETURNS [BigCARD]; <> TimesTwoToTheNth: PROC [in: BigCARD, n: CARDINAL] RETURNS [BigCARD]; <> BigFactorial: PROC [x: CARDINAL] RETURNS [BigCARD]; <> BigRandom: PROC [length: CARDINAL _ 0, max, min: BigCARD _ Zero] RETURNS [BigCARD]; <> <<1) If `length' is nonzero than the result has `length' digits of radix 2^16>> <<2) If `length' is zero than the result is in the range [min, max]>> BigExponentiate: PROC [base, exponent, modulus: BigCARD, reuse: BOOL _ FALSE] RETURNS [BigCARD]; <> <> <<>> BigGCD: PROC [in1, in2: BigCARD] RETURNS [out: BigCARD]; BigInverse: PROC [in, modulus: BigCARD] RETURNS [out: BigCARD]; <> <> BigPrimeTest: PROC [prime: BigCARD, accuracy: CARDINAL _ 20] RETURNS [BOOL]; <> END.