with Lists_of_Integer_Vectors; use Lists_of_Integer_Vectors;
with Arrays_of_Integer_Vector_Lists; use Arrays_of_Integer_Vector_Lists;
with Trees_of_Vectors; use Trees_of_Vectors;
package Volumes is
-- DESCRIPTION :
-- This package contains a routine to compute the volume
-- of a polytope and two routines for computing the mixed volume.
function Volume ( n : natural; l : List ) return natural;
function Volume ( n : natural; l : List;
tv : Tree_of_Vectors ) return natural;
procedure Volume ( n : in natural; l : in List;
tv : in out Tree_of_Vectors; vlm : out natural );
-- DESCRIPTION :
-- Computes n! times the volume of the polytope generated
-- by the points in l; n equals the dimension of the space.
-- The tree of degrees tv maintains the directions used to
-- compute the volume. Once tv has been constructed, the volume
-- can be computed more efficiently.
-- REMARK :
-- The tree of vectors contains directions normal to the polytope
-- generated by a list wl where the first element of the list
-- consists of all zeroes; so eventually l has been shifted.
function Mixed_Volume ( n : natural; al : Array_of_Lists ) return natural;
function Mixed_Volume ( n : natural; al : Array_of_Lists;
tv : Tree_of_Vectors ) return natural;
procedure Mixed_Volume ( n : in natural; al : in Array_of_Lists;
tv : in out Tree_of_Vectors; mv : out natural );
-- DESCRIPTION :
-- Computes the mixed volume of the polytopes generated
-- by the points in al; n equals the dimension of the space.
-- The tree of vectors tv maintains the directions used to
-- compute the mixed volume. Once tv has been constructed,
-- the mixed volume can be computed more efficiently.
end Volumes;