From f11c770329edf407de1e534e286ecbfd2a3495c9 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Tue, 7 Feb 2017 00:21:59 +1100 Subject: Rationals package added --- src/rationals.ads | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 src/rationals.ads (limited to 'src/rationals.ads') diff --git a/src/rationals.ads b/src/rationals.ads new file mode 100644 index 0000000..03ac95e --- /dev/null +++ b/src/rationals.ads @@ -0,0 +1,218 @@ + + +package Rationals is + + + type Fraction is private; + + + + + function "+" + (Left, Right : in Fraction) + return Fraction; + + function "+" + (Left : in Fraction; + Right : in Integer) + return Fraction; + + function "+" + (Left : in Integer; + Right : in Fraction) + return Fraction; + + + + + function "-" + (Left, Right : in Fraction) + return Fraction; + + function "-" + (Left : in Fraction; + Right : in Integer) + return Fraction; + + function "-" + (Left : in Integer; + Right : in Fraction) + return Fraction; + + + + + function "-" + (Right : in Fraction) + return Fraction; + + + + + function "*" + (Left, Right : in Fraction) + return Fraction; + + function "*" + (Left : in Fraction; + Right : in Integer) + return Fraction; + + function "*" + (Left : in Integer; + Right : in Fraction) + return Fraction; + + + + + function "/" + (Left, Right : in Fraction) + return Fraction; + + function "/" + (Left : in Fraction; + Right : in Integer) + return Fraction; + + function "/" + (Left : in Integer; + Right : in Fraction) + return Fraction; + + function "/" + (Left, Right : in Integer) + return Fraction; + + + + + function "=" + (Left, Right : in Fraction) + return Boolean; + + function "=" + (Left : in Fraction; + Right : in Integer) + return Boolean; + + function "=" + (Left : in Integer; + Right : in Fraction) + return Boolean; + + + + + function "<=" + (Left, Right : in Fraction) + return Boolean; + + function "<=" + (Left : in Fraction; + Right : in Integer) + return Boolean; + + function "<=" + (Left : in Integer; + Right : in Fraction) + return Boolean; + + + + + function "<" + (Left, Right : in Fraction) + return Boolean; + + function "<" + (Left : in Fraction; + Right : in Integer) + return Boolean; + + function "<" + (Left : in Integer; + Right : in Fraction) + return Boolean; + + + + + function ">=" + (Left, Right : in Fraction) + return Boolean; + + function ">=" + (Left : in Fraction; + Right : in Integer) + return Boolean; + + function ">=" + (Left : in Integer; + Right : in Fraction) + return Boolean; + + + + + function ">" + (Left, Right : in Fraction) + return Boolean; + + function ">" + (Left : in Fraction; + Right : in Integer) + return Boolean; + + function ">" + (Left : in Integer; + Right : in Fraction) + return Boolean; + + + + + function Numerator + (Item : in Fraction) + return Integer; + + function Denominator + (Item : in Fraction) + return Integer; + + function Floor + (Item : in Fraction) + return Integer; + + function Ceiling + (Item : in Fraction) + return Integer; + + function Round + (Item : in Fraction) + return Integer; + + + + + function Image + (Item : in Fraction) + return String; + + function Value + (Item : in String) + return Fraction; + + +private + + + type Fraction is record + Num : Integer := 0; + Den : Integer := 1; + end record; + + +end Rationals; + + -- cgit