[BACK]Return to bracket_polynomials.ads CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Schubert

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, 6 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;