[BACK]Return to mixed_volume_computation.ads CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Root_Counts / Stalift

File: [local] / OpenXM_contrib / PHC / Ada / Root_Counts / Stalift / mixed_volume_computation.ads (download)

Revision 1.1.1.1 (vendor branch), Sun Oct 29 17:45:31 2000 UTC (23 years, 7 months ago) by maekawa
Branch: PHC, MAIN
CVS Tags: v2, maekawa-ipv6, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, HEAD
Changes since 1.1: +0 -0 lines

Import the second public release of PHCpack.

OKed by Jan Verschelde.

with text_io;                            use text_io;
with Standard_Integer_Vectors;           use Standard_Integer_Vectors;
with Standard_Complex_Poly_Systems;      use Standard_Complex_Poly_Systems;
with Arrays_of_Integer_Vector_Lists;     use Arrays_of_Integer_Vector_Lists;
with Integer_Mixed_Subdivisions;         use Integer_Mixed_Subdivisions;

package Mixed_Volume_Computation is

-- DESCRIPTION :
--   This package offers a number of routines for the computation
--   of the mixed volume of a system of polynomial equations.

-- UTILITIES :

  procedure Compute_Mixture ( supports : in out Array_of_Lists;
                              mix,perms : out Link_to_Vector ); 
  -- DESCRIPTION : 
  --   Computes the type of mixture of the supports of a system.

  -- ON ENTRY :
  --   supports   the supports of a polynomial system.

  -- ON RETURN :
  --   supports   a permuted array of supports, so that the same
  --              supports stand all toghether;
  --   mix        mix(k) indicates number of occurrencies of the kth support;
  --   perms      perms(k) gives the place of the kth support,
  --              after permutation to make supports correspond with mix.

  function Compute_Index ( k : natural; mix : Vector ) return natural;

  -- DESCRIPTION :
  --   Given k, an entry in the supports, the number this function returns
  --   indicates the number of different support, w.r.t. the type of  mixture.

  function Compute_Permutation
                  ( n : natural; mix : Vector; supports : Array_of_Lists )
                  return Link_to_Vector;

  -- DESCRIPTION :
  --   Given the type of mixture and the support, the permutation vector
  --   will be computed.

  -- ON RETURN :
  --   perms        perms(k) gives the place of the kth support,
  --                after permutation to make supports correspond with mix.

  function Typed_Lists ( mix : Vector; points : Array_of_Lists )
                       return Array_of_Lists;

  -- DESCRIPTION :
  --   Returns a tuple of lists where each list occurs only once,
  --   according to the given type of mixture.

  function Permute ( p : Poly_Sys; perm : Link_to_Vector ) return Poly_Sys;
  function Permute ( supports : Array_of_Lists ; perm : Link_to_Vector )
                   return Array_of_Lists;

  -- DESCRIPTION :
  --   Permutes the polynomials in the system or the supports,
  --   according to the vector perm.

-- MIXED VOLUME COMPUTATION, GIVEN A SUBDIVISION :

  function Mixed_Volume ( n : natural; mix : Vector;
                          mic : Mixed_Cell ) return natural;
  function Mixed_Volume ( n : natural; mix : Vector;
                          mixsub : Mixed_Subdivision ) return natural;

  -- DESCRIPTION :
  --   Computes the mixed volume based on a mixed cell and subdivision.
  --   When the cells are not fine enough, they will be refined but will
  --   be lost after returning the result.

  procedure Mixed_Volume ( n : in natural; mix : in Vector; 
                           mic : in out Mixed_Cell; mv : out natural );
  procedure Mixed_Volume ( n : in natural; mix : in Vector; 
                           mixsub : in out Mixed_Subdivision;
                           mv : out natural );

  -- DESCRIPTION :
  --   Computes the mixed volume based on a mixed cell and subdivision.
  --   When the cells are not fine enough, they will be refined by lifting.
  --   The refinement is stored in the subdivision field of the cells.

-- MIXED VOLUME COMPUTATIONS, GIVEN THE SUPPORTS :

  function Mixed_Volume ( n : natural; supports : Array_of_Lists )
			return natural;

  function Mixed_Volume ( file : file_type; n : natural;
                          supports : Array_of_Lists ) return natural;

  function Mixed_Volume ( n : natural; mix : Vector;
                          supports : Array_of_Lists ) return natural;

  function Mixed_Volume ( file : file_type; n : natural; mix : Vector;
                          supports : Array_of_Lists ) return natural;

  procedure Mixed_Volume ( n : in natural; mix : in Vector;
                           supports : in Array_of_Lists;
                           lifted : out Array_of_Lists;
                           mixsub : out Mixed_Subdivision; mv : out natural );

  procedure Mixed_Volume ( file : in file_type; n : in natural;
                           mix : in Vector; supports : in Array_of_Lists;
                           lifted : out Array_of_Lists;
                           mixsub : out Mixed_Subdivision; mv : out natural );

  -- DESCRIPTION :
  --   All these routines compute the mixed volume of support lists.

  -- ON ENTRY :
  --   file       if specified, then the mixed subdivision will be 
  --              written on file;
  --   n          the dimension of the system;
  --   mix        mix(k) is the number of times the kth support occurs;
  --   supports   the supports of a system of n polynomials in n unknowns.

  -- ON RETURN :
  --   lifted     array of listed points;
  --   mixsub     mixed subdivision used;
  --   mv         the mixed volume.

end Mixed_Volume_Computation;