with Abstract_Ring; with Generic_Polynomials; generic with package Ring is new Abstract_Ring(<>); with package Polynomials is new Generic_Polynomials(Ring); package Generic_Polynomial_Systems is -- DESCRIPTION : -- This package provides polynomial systems as an array of polynomials -- with some arithmetic operations. use Ring,Polynomials; -- DATA STRUCTURES : type Poly_Sys is array ( integer range <> ) of Poly; type Link_to_Poly_Sys is access Poly_Sys; -- COPYING : procedure Copy ( p : in Poly_Sys; q : in out Poly_Sys ); -- ARITHMETIC OPERATIONS : function "+" ( p,q : Poly_Sys ) return Poly_Sys; -- return p+q function "-" ( p,q : Poly_Sys ) return Poly_Sys; -- return p-q function "-" ( p : Poly_Sys ) return Poly_Sys; -- return -p function "*" ( a : number; p : Poly_Sys ) return Poly_Sys; -- return a*p function "*" ( p : Poly_Sys; a : number) return Poly_Sys; -- return p*a procedure Add ( p : in out Poly_Sys; q : in Poly_Sys ); -- p := p+q procedure Sub ( p : in out Poly_Sys; q : in Poly_Sys ); -- p := p-q procedure Min ( p : in out Poly_Sys ); -- p := -p procedure Mul ( p : in out Poly_Sys; a : in number ); -- p := a*p -- DIFFERENTIATORS : function Diff ( p : Poly_Sys; i : natural ) return Poly_Sys; procedure Diff ( p : in out Poly_Sys; i : in natural ); -- DESTRUCTORS : procedure Clear ( p : in out Poly_Sys ); procedure Clear ( p : in out Link_to_Poly_Sys ); end Generic_Polynomial_Systems;