with Standard_Complex_Numbers; use Standard_Complex_Numbers;
with Standard_Integer_Vectors; use Standard_Integer_Vectors;
with Standard_Complex_Vectors;
with Standard_Integer_VecVecs; use Standard_Integer_VecVecs;
with Standard_Complex_VecVecs;
with Standard_Complex_Polynomials;
with Standard_Complex_Laur_Polys;
with Standard_Complex_Poly_Systems; use Standard_Complex_Poly_Systems;
with Standard_Complex_Laur_Systems; use Standard_Complex_Laur_Systems;
package Exponent_Vectors is
-- DESCRIPTION :
-- This package facilitates the management of exponent vectors.
-- DATA STRUCTURE : array of exponent vectors
type Exponent_Vectors_Array is array ( integer range <> ) of Link_to_VecVec;
-- CREATORS :
function Create ( p : Standard_Complex_Laur_Polys.Poly ) return VecVec;
function Create ( p : Standard_Complex_Polynomials.Poly ) return VecVec;
-- DESCRIPTION :
-- The range of the vector on return is 1..Number_of_Terms(p).
-- This vector contains copies of all exponents of p, as ordered in p.
function Create ( p : Poly_Sys ) return Exponent_Vectors_Array;
function Create ( p : Laur_Sys ) return Exponent_Vectors_Array;
-- SELECTOR :
function Position ( ev : VecVec; v : Vector ) return integer;
-- DESCRIPTION :
-- Returns the position of v in the vector ev.
-- If v does not occur in ev, then ev'last+1 will be returned.
-- EVALUATORS :
function Eval ( e : Vector; c : Complex_Number;
x : Standard_Complex_Vectors.Vector ) return Complex_Number;
-- DESCRIPTION :
-- Evaluates the term c*x^e.
function Eval ( ev : VecVec; c,x : Standard_Complex_Vectors.Vector )
return Complex_Number;
-- DESCRIPTION :
-- Evaluates the polynomial with coefficients in c and exponents in ev.
function Eval ( ev : Exponent_Vectors_Array;
c : Standard_Complex_VecVecs.VecVec;
x : Standard_Complex_Vectors.Vector )
return Standard_Complex_Vectors.Vector;
-- DESCRIPTION :
-- Evaluates the system with coefficients in c and exponents in ev.
-- DESTRUCTORS :
procedure Clear ( v : in out Exponent_Vectors_Array );
-- DESCRIPTION :
-- Clears the allocated memory.
end Exponent_Vectors;