Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Stalift/contributions_to_mixed_volume.ads, Revision 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>