Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Stalift/contributions_to_mixed_volume.ads, Revision 1.1.1.1
1.1 maekawa 1: with Standard_Integer_Vectors; use Standard_Integer_Vectors;
2: with Arrays_of_Integer_Vector_Lists; use Arrays_of_Integer_Vector_Lists;
3: with Integer_Faces_of_Polytope; use Integer_Faces_of_Polytope;
4:
5: package Contributions_to_Mixed_Volume is
6:
7: -- DESCRIPTION :
8: -- This package provides utilities to determine whether a point
9: -- contributes to the mixed volume of a tuple of point sets, i.e.: whether
10: -- it can be removed of the tuple without decreasing the mixed volume.
11:
12: -- THE CRITERION : (simple/exhaustive)
13:
14: function Simple_Zero_Contribution
15: ( pts : Array_of_Lists;
16: x : Vector; i : natural ) return boolean;
17:
18: function Simple_Zero_Contribution
19: ( pts : Array_of_Lists; ifacets : Faces;
20: x : Vector; i : natural ) return boolean;
21:
22: function Exhaustive_Zero_Contribution
23: ( pts : Array_of_Lists;
24: x : Vector; i : natural ) return boolean;
25:
26: function Exhaustive_Zero_Contribution
27: ( pts : Array_of_Lists; ifacets : Faces;
28: x : Vector; i : natural ) return boolean;
29:
30: -- DESCRIPTION :
31: -- Returns true if the point x does not influence the mixed volume of
32: -- the tuple pts, when considered w.r.t. the ith component.
33: -- There is a simple and an exhaustive criterion to check the contribution
34: -- of the point. When the simple criterion returns false, the point does
35: -- not necessarily make a contribution to the mixed volume, whereas when
36: -- the exhaustive criterion returns false, we can be sure that the point
37: -- contributes to the mixed volume.
38:
39: -- ON ENTRY :
40: -- pts tuple of points sets, with dimension = x'length;
41: -- ifacets all facets of the polytope spanned by pts(i), that contain x;
42: -- x a point, considered w.r.t. pts(i);
43: -- i component of pts, i is in pts'range.
44:
45: -- ON RETURN :
46: -- true if Mixed_Volume(pts) = Mixed_Volume(pts, pts(i) contains x);
47: -- false when the criterion fails to decide.
48:
49: -- SWEEPING THROUGH THE POINT LISTS : (with simple/exhaustive criterion)
50:
51: function Simple_Sweep ( pts : Array_of_Lists ) return Array_of_Lists;
52:
53: function Simple_Sweep ( pts : Array_of_Lists; facets : Array_of_Faces )
54: return Array_of_Lists;
55:
56: function Exhaustive_Sweep ( pts : Array_of_Lists ) return Array_of_Lists;
57:
58: function Exhaustive_Sweep ( pts : Array_of_Lists; facets : Array_of_Faces )
59: return Array_of_Lists;
60:
61: -- DESCRIPTION :
62: -- Applies the simple/exhaustive criterion to the points.
63: -- Returns those points for which the criterion has failed to
64: -- demonstrate that the contribution to the mixed volume was zero.
65:
66: -- ON ENTRY :
67: -- pts tuple of point sets;
68: -- facets tuple of facets of the polytopes spanned by pts,
69: -- facets'range = pts'range.
70:
71: -- ON RETURN :
72: -- A tuple of point sets where the points that do not contribute to the
73: -- mixed volume have been eliminated, according to the simple or exhaustive
74: -- criterion that has been used.
75: -- Note that essential sets are not necessarily unique, because they depend
76: -- on the order in which points with zero contribution are eliminated.
77:
78: end Contributions_to_Mixed_Volume;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>