File : zeros.ads
with Reps, Ada.Text_IO;
use Reps, Ada.Text_IO;
pragma Elaborate (Reps);
generic
-------------------- begin_include scalars Number
type Number is private;
--- addition and multiplication
with function IsZero(S: Number) return Boolean is <>;
with procedure SetZero(S: out Number) is <>;
with procedure Neg(S: in out Number) is <>;
with procedure Neg(S1: in Number; S2: out Number) is <>;
with function "-"(S: Number) return Number is <>;
with procedure Add(S1: in Number; S2: in out Number) is <>;
with procedure Sum(S1,S2: in Number; S3: out Number) is <>;
with function "+"(S1,S2: Number) return Number is <>;
with procedure Sub(S1: in Number; S2: in out Number) is <>;
with procedure Diff(S1,S2: in Number; S3: out Number) is <>;
with function "-"(S1,S2: Number) return Number is <>;
with procedure Mult(I: in Integer; S: in out Number) is <>;
with procedure Prod(I: in Integer; S1: in Number; S2: out Number) is <>;
with function "*"(I: Integer; S: Number) return Number is <>;
with procedure MultAdd(I: Integer; S1: in Number; S2: in out Number) is <>;
with procedure Mult(S1: in Number; S2: in out Number) is <>;
with procedure Prod(S1,S2: in Number; S3: out Number) is <>;
with function "*"(S1,S2: Number) return Number is <>;
with procedure MultAdd(S1,S2: in Number; S3: in out Number) is <>;
with function "**"(S: Number; I: Integer) return Number is <>;
--- conversion and i/o
with function Scal(K: Integer) return Number is <>;
with function Scal(R: Rep) return Number is <>;
with procedure ShowType(S: in Number) is <>;
with procedure Show1(N: in String; S: in Number) is <>;
with procedure Show2(N: in String; S,S2: in Number) is <>;
with procedure Get(F: in File_Type; S: out Number; Decimal: in Boolean := False) is <>;
with procedure Put(F: in File_Type; S: in Number; Decimal: in Boolean := False) is <>;
-------------------- end_include scalars
-------------------- begin_include scalars-more Number
--- basic
with function IsNumeric(S: Number) return Boolean is <>;
with function IsSharp(S: Number) return Boolean is <>;
with function IsNumbers(S: Number) return Boolean is <>;
with procedure ModNumbers(S: in out Number) is <>;
with procedure ToBalls(S: in out Number) is <>;
with function Approx(S: Number) return Rep is <>;
--- sets
with function Center0(S: Number) return Boolean is <>;
with function Contains0(S: Number) return Boolean is <>;
with function Contains(S1,S2: Number) return Boolean is <>;
with function BallAt0(R: Rep) return Number is <>;
with function BallAt0(S: Number) return Number is <>;
with function DiskAt0(R: Rep) return Number is <>;
with function DiskAt0(S: Number) return Number is <>;
with function Disk(R1,R2: Rep) return Number is <>;
with function Disk(S: Number) return Number is <>;
with function Center(S: Number) return Number is <>;
with function CenterDisk(S: Number) return Number is <>;
with function ModCenter(S: Number) return Number is <>;
with function Union(S1,S2: Number) return Number is <>;
with function Intersection(S1,S2: Number) return Number is <>;
--- order
with function "<"(S1,S2: Number) return Boolean is <>;
with function "<="(S1,S2: Number) return Boolean is <>;
with function ">="(S1,S2: Number) return Boolean is <>;
with function ">"(S1,S2: Number) return Boolean is <>;
with function Min(S1,S2: Number) return Number is <>;
with function Max(S1,S2: Number) return Number is <>;
with function Inf(S: Number) return Rep is <>;
with function Sup(S: Number) return Rep is <>;
--- functions
with function Norm(S: Number) return Number is <>;
with function MaxNorm(S: Number) return Radius is <>;
with function Sqr(S: Number) return Number is <>;
with function "*"(R: Rep; S: Number) return Number is <>;
with function "/"(S: Number; R: Rep) return Number is <>;
with function Inv(S: Number) return Number is <>;
with function "/"(S1,S2: Number) return Number is <>;
with function Exp(S: Number) return Number is <>;
with function Log(S: Number) return Number is <>;
with function Sqrt(S: Number) return Number is <>;
-------------------- end_include scalars-more
package Zeros is --- find zeros of functions
pragma Elaborate_Body;
generic
with function F(S: Number) return Number;
with function DF(S: Number) return Number;
function FindZero(S0,S1,S2: Number; Eps1,Eps2: Radius) return Number;
Scal_Zero: constant Number := Scal(0);
Scal_One: constant Number := Scal(1);
Scal_Two: constant Number := Scal(2);
Z_Trunc: constant Boolean := IsNumeric(Scal_Zero);
end Zeros;