Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Polynomials/generic_laur_poly_functions.ads, Revision 1.1
1.1 ! maekawa 1: with Abstract_Ring;
! 2: with Abstract_Ring.Field;
! 3: with Generic_Vectors;
! 4: with Generic_Laurent_Polynomials;
! 5:
! 6: generic
! 7:
! 8: with package Ring is new Abstract_Ring(<>);
! 9: with package Field is new Ring.Field(<>);
! 10: with package Vectors is new Generic_Vectors(Ring);
! 11: with package Polynomials is new Generic_Laurent_Polynomials(Ring);
! 12:
! 13: package Generic_Laur_Poly_Functions is
! 14:
! 15: -- DESCRIPTION :
! 16: -- Besides the term by term evaluation, two special data structures are
! 17: -- provided for efficient evaluation of polynomials in several variables.
! 18: -- With negative exponents, numeric/constraint errors are raised when
! 19: -- zero is evaluated.
! 20:
! 21: use Ring,Field,Vectors,Polynomials;
! 22:
! 23: -- FUNCTION TYPE :
! 24:
! 25: type Evaluator is access function ( x : Vector ) return number;
! 26:
! 27: -- DATA STRUCTURES :
! 28:
! 29: type Eval_Poly is private;
! 30: type Eval_Coeff_Poly is private;
! 31:
! 32: -- CONSTRUCTORS :
! 33:
! 34: function Create ( p : Poly ) return Eval_Poly;
! 35: function Create ( p : Poly ) return Eval_Coeff_Poly;
! 36:
! 37: procedure Diff ( p : in Poly; i : in integer;
! 38: cp : out Eval_Coeff_Poly; m : out Vector );
! 39: -- evaluable coefficient polynomial of the partial derivative,
! 40: -- with m the multiplication factors of the coefficients of p
! 41:
! 42: function Coeff ( p : Poly ) return Vector; -- returns coefficient vector
! 43:
! 44: -- EVALUATORS :
! 45:
! 46: function Eval ( p : Poly; x : number; i : integer ) return Poly;
! 47: -- return p(x1,..,xi=x,..,xn);
! 48: -- Number_of_Unknowns(Eval(p,x,i)) = Number_of_Unknowns(p)-1
! 49:
! 50: function Eval ( d : Degrees; c : number; x : Vector ) return number;
! 51: -- return c*x**d
! 52: function Eval ( t : Term; c : number; x : Vector ) return number;
! 53: -- return c*x**d, with d = t.dg
! 54: function Eval ( t : Term; x : Vector ) return number;
! 55:
! 56: function Eval ( p : Poly; x : Vector ) return number; -- return p(x)
! 57: function Eval ( p : Poly; c,x : Vector ) return number;
! 58: -- return p(c,x), with c = vector of coefficients for p
! 59:
! 60: function Eval ( p : Eval_Poly; x : Vector ) return number; -- return p(x)
! 61: function Eval ( p : Eval_Coeff_Poly; c,x : Vector ) return number;
! 62: -- return p(c,x), with c = vector of coefficients for p
! 63:
! 64: -- DESTRUCTORS : deallocate memory.
! 65:
! 66: procedure Clear ( p : in out Eval_Poly );
! 67: procedure Clear ( p : in out Eval_Coeff_Poly );
! 68:
! 69: private
! 70:
! 71: type Eval_Poly_Rep;
! 72: type Eval_Coeff_Poly_Rep;
! 73:
! 74: type Eval_Poly is access Eval_Poly_Rep;
! 75: type Eval_Coeff_Poly is access Eval_Coeff_Poly_Rep;
! 76:
! 77: end Generic_Laur_Poly_Functions;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>