File: [local] / OpenXM_contrib / PHC / Ada / Schubert / bracket_polynomials.ads (download)
Revision 1.1.1.1 (vendor branch), Sun Oct 29 17:45:32 2000 UTC (23 years, 11 months ago) by maekawa
Branch: PHC, MAIN
CVS Tags: v2, maekawa-ipv6, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, HEAD Changes since 1.1: +0 -0
lines
Import the second public release of PHCpack.
OKed by Jan Verschelde.
|
with Generic_Lists;
with Standard_Complex_Numbers; use Standard_Complex_Numbers;
with Brackets,Bracket_Monomials; use Brackets,Bracket_Monomials;
package Bracket_Polynomials is
-- DESCRIPTION :
-- This package offers a data representation of polynomials with
-- complex coefficients and brackets as unknowns.
type Bracket_Term is record
coeff : Complex_Number;
monom : Bracket_Monomial;
end record;
type Bracket_Polynomial is private;
-- CONSTRUCTORS :
function Create ( m : Bracket_Monomial ) return Bracket_Polynomial;
function Create ( t : Bracket_Term ) return Bracket_Polynomial;
-- DESCRIPTION :
-- Creates a bracket polynomial consisting out of one term.
-- When only the monomial is given, the coefficient equals one.
procedure Copy ( t1 : in Bracket_Term; t2 : in out Bracket_Term );
-- DESCRIPTION :
-- Copies the term t1 to the term t2.
procedure Copy ( p : in Bracket_Polynomial; q : in out Bracket_Polynomial );
-- DESCRIPTION :
-- Copies the polynomial p to the polynomial q.
-- Note that q := p leads to data sharing and side effects.
-- COMPARISON OPERATIONS :
function Is_Equal ( t1,t2 : Bracket_Term ) return boolean;
function Is_Equal ( p,q : Bracket_Polynomial ) return boolean;
-- DESCRIPTION :
-- Returns true if both bracket terms/polynomials are the same.
function ">" ( t1,t2 : Bracket_Term ) return boolean;
function "<" ( t1,t2 : Bracket_Term ) return boolean;
-- DESCRIPTION :
-- The order on terms is induced by the order on bracket monomials.
-- ARITHMETIC OPERATIONS :
function "+" ( t : Bracket_Term; p : Bracket_Polynomial )
return Bracket_Polynomial;
function "+" ( p : Bracket_Polynomial; t : Bracket_Term )
return Bracket_Polynomial;
procedure Add ( p : in out Bracket_Polynomial; t : in Bracket_Term );
-- DESCRIPTION :
-- Adds a term t to the bracket polynomial p.
procedure Frontal_Add ( p : in out Bracket_Polynomial; t : in Bracket_Term );
-- DESCRIPTION :
-- Adds the term in front of p, without respect of order or whether
-- a term with same degrees as t already exists.
function "+" ( p,q : Bracket_Polynomial ) return Bracket_Polynomial;
procedure Add ( p : in out Bracket_Polynomial; q : in Bracket_Polynomial );
-- DESCRIPTION : returns p+q or makes p := p+q.
function "-" ( t : Bracket_Term ) return Bracket_Term;
function "-" ( p : Bracket_Polynomial ) return Bracket_Polynomial;
procedure Min ( t : in out Bracket_Term );
procedure Min ( p : in out Bracket_Polynomial );
-- DESCRIPTION :
-- Returns -t, -p or changes t, p into -t, -p.
function "-" ( t : Bracket_Term; p : Bracket_Polynomial )
return Bracket_Polynomial;
function "-" ( p : Bracket_Polynomial; t : Bracket_Term )
return Bracket_Polynomial;
procedure Min ( p : in out Bracket_Polynomial; t : in Bracket_Term );
-- DESCRIPTION :
-- Subtracts a term t to the bracket polynomial p.
procedure Frontal_Min ( p : in out Bracket_Polynomial; t : in Bracket_Term );
-- DESCRIPTION :
-- Adds the term -t in front of p, without respect of order or whether
-- a term with same degrees as t already exists.
function "-" ( p,q : Bracket_Polynomial ) return Bracket_Polynomial;
procedure Min ( p : in out Bracket_Polynomial; q : in Bracket_Polynomial );
-- DESCRIPTION : returns p-q or makes p := p-q.
-- ITERATORS OVER MONOMIALS :
function Number_of_Monomials ( p : Bracket_Polynomial ) return natural;
-- DESCRIPTION :
-- Returns the number of monomials in p.
generic
with procedure Process ( t : in Bracket_Term; continue : out boolean );
procedure Enumerate_Terms ( p : in Bracket_Polynomial );
-- DESCRIPTION :
-- Visits all terms, ordered lexicographically, and applies the
-- procedure Process to each of them. Enumeration stops when
-- continue is set to false.
-- DESTRUCTOR :
procedure Clear ( t : in out Bracket_Term );
procedure Clear ( p : in out Bracket_Polynomial );
-- DESCRIPTION :
-- Deallocates the occupied memory.
private
package Lists_of_Bracket_Terms is new Generic_Lists(Bracket_Term);
type Bracket_Polynomial is new Lists_of_Bracket_Terms.List;
end Bracket_Polynomials;