with text_io; use text_io;
with Standard_Complex_Poly_Systems; use Standard_Complex_Poly_Systems;
with Standard_Complex_Solutions; use Standard_Complex_Solutions;
procedure Black_Box_Root_Counting
( file : in file_type;
p : in out Poly_Sys; rc : out natural;
q : out Poly_Sys; qsols : out Solution_List;
rocotime,hocotime : out duration );
-- DESCRIPTION :
-- Calculates four different root counts: total degree, m-homogeneous
-- Bezout number, generalized Bezout number based on set structure,
-- and mixed volume. Heuristics are used for the Bezout numbers.
-- Returns the start system with lowest root count and least amount
-- of work, which means that linear-product start systems are prefered,
-- when Bezout numbers equal the mixed volume.
-- ON ENTRY :
-- file must be opened for output;
-- p a polynomial system.
-- ON RETURN :
-- p may have been permuted for semi-mixed inputs;
-- rc root count, Bezout number or mixed volume;
-- q start system;
-- qsols solutions of q, Length_Of(qsols) = rc;
-- rocotime elapsed user cpu time for computation of the root counts;
-- hocotime elapsed user cpu time for construction of start system.