-- Package for Signed Bignums package BigNumPkg.Signed is type Signed_BigNum is new Bignum; first : Constant Signed_Bignum; last : Constant Signed_Bignum; Minus_One : constant Signed_BigNum; Zero : Constant Signed_Bignum := Signed_Bignum (BignumPkg.Zero); One : Constant Signed_Bignum := Signed_Bignum (BignumPkg.One); Signed_BigNumOverFlow : exception; -- Removes leading zeros function toString(X: Signed_BigNum) return String; function "<" (X, Y : Signed_BigNum) return Boolean; function ">" (X, Y : Signed_BigNum) return Boolean; function "<=" (X, Y : Signed_BigNum) return Boolean; function ">=" (X, Y : Signed_BigNum) return Boolean; -- Returns the negative of X function negate (X : Signed_BigNum) return Signed_BigNum; -- Return absolute value of X function abs_val (X : Signed_BigNum) return Signed_BigNum; function "+" (X, Y : Signed_BigNum) return Signed_BigNum; function "-" (X, Y : Signed_BigNum) return Signed_BigNum; function "*" (X, Y : Signed_BigNum) return Signed_BigNum; procedure Put (Item : Signed_BigNum; Width : Natural := 1); -- Get reads positive and negative numbers -- Negative numbers are preceded by a minus sign (ie '-') procedure Get (Item : out Signed_BigNum); private minus_one : Constant Signed_Bignum := (0 => 5, size - 1 => 1, others => 0); -- Only valid for base 10 first : Constant Signed_Bignum := (others => 9); last : Constant Signed_Bignum := (0 => 4, others => 9); end BigNumPkg.Signed;