49 lines
1.5 KiB
Ada
49 lines
1.5 KiB
Ada
generic
|
|
type Real is digits <>;
|
|
with function Sqrt(X: Real) return Real;
|
|
with function "**"(X: Real; Y: Real) return Real;
|
|
package Approximation is
|
|
|
|
type Number is private;
|
|
|
|
-- create an approximation
|
|
function Approx(Value: Real; Sigma: Real) return Number;
|
|
|
|
-- unary operations and conversion Real to Number
|
|
function "+"(X: Real) return Number;
|
|
function "-"(X: Real) return Number;
|
|
function "+"(X: Number) return Number;
|
|
function "-"(X: Number) return Number;
|
|
|
|
-- addition / subtraction
|
|
function "+"(X: Number; Y: Number) return Number;
|
|
function "-"(X: Number; Y: Number) return Number;
|
|
|
|
-- multiplication / division
|
|
function "*"(X: Number; Y: Number) return Number;
|
|
function "/"(X: Number; Y: Number) return Number;
|
|
|
|
-- exponentiation
|
|
function "**"(X: Number; Y: Positive) return Number;
|
|
function "**"(X: Number; Y: Real) return Number;
|
|
|
|
-- Output to Standard IO (wrapper for Ada.Text_IO and Ada.Text_IO.Float_IO)
|
|
procedure Put_Line(Message: String;
|
|
Item: Number;
|
|
Value_Fore: Natural := 7;
|
|
Sigma_Fore: Natural := 4;
|
|
Aft: Natural := 2;
|
|
Exp: Natural := 0);
|
|
procedure Put(Item: Number;
|
|
Value_Fore: Natural := 7;
|
|
Sigma_Fore: Natural := 3;
|
|
Aft: Natural := 2;
|
|
Exp: Natural := 0);
|
|
|
|
private
|
|
type Number is record
|
|
Value: Real;
|
|
Sigma: Real;
|
|
end record;
|
|
end Approximation;
|