Annotation of OpenXM_contrib/PHC/Ada/Schubert/bracket_polynomials.ads, Revision 1.1.1.1
1.1 maekawa 1: with Generic_Lists;
2: with Standard_Complex_Numbers; use Standard_Complex_Numbers;
3: with Brackets,Bracket_Monomials; use Brackets,Bracket_Monomials;
4:
5: package Bracket_Polynomials is
6:
7: -- DESCRIPTION :
8: -- This package offers a data representation of polynomials with
9: -- complex coefficients and brackets as unknowns.
10:
11: type Bracket_Term is record
12: coeff : Complex_Number;
13: monom : Bracket_Monomial;
14: end record;
15:
16: type Bracket_Polynomial is private;
17:
18: -- CONSTRUCTORS :
19:
20: function Create ( m : Bracket_Monomial ) return Bracket_Polynomial;
21: function Create ( t : Bracket_Term ) return Bracket_Polynomial;
22:
23: -- DESCRIPTION :
24: -- Creates a bracket polynomial consisting out of one term.
25: -- When only the monomial is given, the coefficient equals one.
26:
27: procedure Copy ( t1 : in Bracket_Term; t2 : in out Bracket_Term );
28:
29: -- DESCRIPTION :
30: -- Copies the term t1 to the term t2.
31:
32: procedure Copy ( p : in Bracket_Polynomial; q : in out Bracket_Polynomial );
33:
34: -- DESCRIPTION :
35: -- Copies the polynomial p to the polynomial q.
36: -- Note that q := p leads to data sharing and side effects.
37:
38: -- COMPARISON OPERATIONS :
39:
40: function Is_Equal ( t1,t2 : Bracket_Term ) return boolean;
41: function Is_Equal ( p,q : Bracket_Polynomial ) return boolean;
42:
43: -- DESCRIPTION :
44: -- Returns true if both bracket terms/polynomials are the same.
45:
46: function ">" ( t1,t2 : Bracket_Term ) return boolean;
47: function "<" ( t1,t2 : Bracket_Term ) return boolean;
48:
49: -- DESCRIPTION :
50: -- The order on terms is induced by the order on bracket monomials.
51:
52: -- ARITHMETIC OPERATIONS :
53:
54: function "+" ( t : Bracket_Term; p : Bracket_Polynomial )
55: return Bracket_Polynomial;
56: function "+" ( p : Bracket_Polynomial; t : Bracket_Term )
57: return Bracket_Polynomial;
58: procedure Add ( p : in out Bracket_Polynomial; t : in Bracket_Term );
59:
60: -- DESCRIPTION :
61: -- Adds a term t to the bracket polynomial p.
62:
63: procedure Frontal_Add ( p : in out Bracket_Polynomial; t : in Bracket_Term );
64:
65: -- DESCRIPTION :
66: -- Adds the term in front of p, without respect of order or whether
67: -- a term with same degrees as t already exists.
68:
69: function "+" ( p,q : Bracket_Polynomial ) return Bracket_Polynomial;
70: procedure Add ( p : in out Bracket_Polynomial; q : in Bracket_Polynomial );
71:
72: -- DESCRIPTION : returns p+q or makes p := p+q.
73:
74: function "-" ( t : Bracket_Term ) return Bracket_Term;
75: function "-" ( p : Bracket_Polynomial ) return Bracket_Polynomial;
76:
77: procedure Min ( t : in out Bracket_Term );
78: procedure Min ( p : in out Bracket_Polynomial );
79:
80: -- DESCRIPTION :
81: -- Returns -t, -p or changes t, p into -t, -p.
82:
83: function "-" ( t : Bracket_Term; p : Bracket_Polynomial )
84: return Bracket_Polynomial;
85: function "-" ( p : Bracket_Polynomial; t : Bracket_Term )
86: return Bracket_Polynomial;
87: procedure Min ( p : in out Bracket_Polynomial; t : in Bracket_Term );
88:
89: -- DESCRIPTION :
90: -- Subtracts a term t to the bracket polynomial p.
91:
92: procedure Frontal_Min ( p : in out Bracket_Polynomial; t : in Bracket_Term );
93:
94: -- DESCRIPTION :
95: -- Adds the term -t in front of p, without respect of order or whether
96: -- a term with same degrees as t already exists.
97:
98: function "-" ( p,q : Bracket_Polynomial ) return Bracket_Polynomial;
99: procedure Min ( p : in out Bracket_Polynomial; q : in Bracket_Polynomial );
100:
101: -- DESCRIPTION : returns p-q or makes p := p-q.
102:
103: -- ITERATORS OVER MONOMIALS :
104:
105: function Number_of_Monomials ( p : Bracket_Polynomial ) return natural;
106:
107: -- DESCRIPTION :
108: -- Returns the number of monomials in p.
109:
110: generic
111: with procedure Process ( t : in Bracket_Term; continue : out boolean );
112: procedure Enumerate_Terms ( p : in Bracket_Polynomial );
113:
114: -- DESCRIPTION :
115: -- Visits all terms, ordered lexicographically, and applies the
116: -- procedure Process to each of them. Enumeration stops when
117: -- continue is set to false.
118:
119: -- DESTRUCTOR :
120:
121: procedure Clear ( t : in out Bracket_Term );
122: procedure Clear ( p : in out Bracket_Polynomial );
123:
124: -- DESCRIPTION :
125: -- Deallocates the occupied memory.
126:
127: private
128:
129: package Lists_of_Bracket_Terms is new Generic_Lists(Bracket_Term);
130: type Bracket_Polynomial is new Lists_of_Bracket_Terms.List;
131:
132: end Bracket_Polynomials;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>