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

Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Stalift/mixed_volume_computation.ads, Revision 1.1.1.1

1.1       maekawa     1: with text_io;                            use text_io;
                      2: with Standard_Integer_Vectors;           use Standard_Integer_Vectors;
                      3: with Standard_Complex_Poly_Systems;      use Standard_Complex_Poly_Systems;
                      4: with Arrays_of_Integer_Vector_Lists;     use Arrays_of_Integer_Vector_Lists;
                      5: with Integer_Mixed_Subdivisions;         use Integer_Mixed_Subdivisions;
                      6:
                      7: package Mixed_Volume_Computation is
                      8:
                      9: -- DESCRIPTION :
                     10: --   This package offers a number of routines for the computation
                     11: --   of the mixed volume of a system of polynomial equations.
                     12:
                     13: -- UTILITIES :
                     14:
                     15:   procedure Compute_Mixture ( supports : in out Array_of_Lists;
                     16:                               mix,perms : out Link_to_Vector );
                     17:   -- DESCRIPTION :
                     18:   --   Computes the type of mixture of the supports of a system.
                     19:
                     20:   -- ON ENTRY :
                     21:   --   supports   the supports of a polynomial system.
                     22:
                     23:   -- ON RETURN :
                     24:   --   supports   a permuted array of supports, so that the same
                     25:   --              supports stand all toghether;
                     26:   --   mix        mix(k) indicates number of occurrencies of the kth support;
                     27:   --   perms      perms(k) gives the place of the kth support,
                     28:   --              after permutation to make supports correspond with mix.
                     29:
                     30:   function Compute_Index ( k : natural; mix : Vector ) return natural;
                     31:
                     32:   -- DESCRIPTION :
                     33:   --   Given k, an entry in the supports, the number this function returns
                     34:   --   indicates the number of different support, w.r.t. the type of  mixture.
                     35:
                     36:   function Compute_Permutation
                     37:                   ( n : natural; mix : Vector; supports : Array_of_Lists )
                     38:                   return Link_to_Vector;
                     39:
                     40:   -- DESCRIPTION :
                     41:   --   Given the type of mixture and the support, the permutation vector
                     42:   --   will be computed.
                     43:
                     44:   -- ON RETURN :
                     45:   --   perms        perms(k) gives the place of the kth support,
                     46:   --                after permutation to make supports correspond with mix.
                     47:
                     48:   function Typed_Lists ( mix : Vector; points : Array_of_Lists )
                     49:                        return Array_of_Lists;
                     50:
                     51:   -- DESCRIPTION :
                     52:   --   Returns a tuple of lists where each list occurs only once,
                     53:   --   according to the given type of mixture.
                     54:
                     55:   function Permute ( p : Poly_Sys; perm : Link_to_Vector ) return Poly_Sys;
                     56:   function Permute ( supports : Array_of_Lists ; perm : Link_to_Vector )
                     57:                    return Array_of_Lists;
                     58:
                     59:   -- DESCRIPTION :
                     60:   --   Permutes the polynomials in the system or the supports,
                     61:   --   according to the vector perm.
                     62:
                     63: -- MIXED VOLUME COMPUTATION, GIVEN A SUBDIVISION :
                     64:
                     65:   function Mixed_Volume ( n : natural; mix : Vector;
                     66:                           mic : Mixed_Cell ) return natural;
                     67:   function Mixed_Volume ( n : natural; mix : Vector;
                     68:                           mixsub : Mixed_Subdivision ) return natural;
                     69:
                     70:   -- DESCRIPTION :
                     71:   --   Computes the mixed volume based on a mixed cell and subdivision.
                     72:   --   When the cells are not fine enough, they will be refined but will
                     73:   --   be lost after returning the result.
                     74:
                     75:   procedure Mixed_Volume ( n : in natural; mix : in Vector;
                     76:                            mic : in out Mixed_Cell; mv : out natural );
                     77:   procedure Mixed_Volume ( n : in natural; mix : in Vector;
                     78:                            mixsub : in out Mixed_Subdivision;
                     79:                            mv : out natural );
                     80:
                     81:   -- DESCRIPTION :
                     82:   --   Computes the mixed volume based on a mixed cell and subdivision.
                     83:   --   When the cells are not fine enough, they will be refined by lifting.
                     84:   --   The refinement is stored in the subdivision field of the cells.
                     85:
                     86: -- MIXED VOLUME COMPUTATIONS, GIVEN THE SUPPORTS :
                     87:
                     88:   function Mixed_Volume ( n : natural; supports : Array_of_Lists )
                     89:                        return natural;
                     90:
                     91:   function Mixed_Volume ( file : file_type; n : natural;
                     92:                           supports : Array_of_Lists ) return natural;
                     93:
                     94:   function Mixed_Volume ( n : natural; mix : Vector;
                     95:                           supports : Array_of_Lists ) return natural;
                     96:
                     97:   function Mixed_Volume ( file : file_type; n : natural; mix : Vector;
                     98:                           supports : Array_of_Lists ) return natural;
                     99:
                    100:   procedure Mixed_Volume ( n : in natural; mix : in Vector;
                    101:                            supports : in Array_of_Lists;
                    102:                            lifted : out Array_of_Lists;
                    103:                            mixsub : out Mixed_Subdivision; mv : out natural );
                    104:
                    105:   procedure Mixed_Volume ( file : in file_type; n : in natural;
                    106:                            mix : in Vector; supports : in Array_of_Lists;
                    107:                            lifted : out Array_of_Lists;
                    108:                            mixsub : out Mixed_Subdivision; mv : out natural );
                    109:
                    110:   -- DESCRIPTION :
                    111:   --   All these routines compute the mixed volume of support lists.
                    112:
                    113:   -- ON ENTRY :
                    114:   --   file       if specified, then the mixed subdivision will be
                    115:   --              written on file;
                    116:   --   n          the dimension of the system;
                    117:   --   mix        mix(k) is the number of times the kth support occurs;
                    118:   --   supports   the supports of a system of n polynomials in n unknowns.
                    119:
                    120:   -- ON RETURN :
                    121:   --   lifted     array of listed points;
                    122:   --   mixsub     mixed subdivision used;
                    123:   --   mv         the mixed volume.
                    124:
                    125: end Mixed_Volume_Computation;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>