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

Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Stalift/bkk_bound_computations.adb, Revision 1.1

1.1     ! maekawa     1: with integer_io;                         use integer_io;
        !             2: with Standard_Integer_Vectors;           use Standard_Integer_Vectors;
        !             3: with Lists_of_Integer_Vectors;           use Lists_of_Integer_Vectors;
        !             4: with Arrays_of_Integer_Vector_Lists;     use Arrays_of_Integer_Vector_Lists;
        !             5: with Standard_Complex_Laur_Systems;      use Standard_Complex_Laur_Systems;
        !             6: with Standard_Poly_Laur_Convertors;      use Standard_Poly_Laur_Convertors;
        !             7: with Power_Lists;                        use Power_Lists;
        !             8: with Trees_of_Vectors;                   use Trees_of_Vectors;
        !             9: with Trees_of_Vectors_io;                use Trees_of_Vectors_io;
        !            10: with Volumes;
        !            11: with Mixed_Homotopy_Continuation;
        !            12: with Integer_Lifting_Utilities;          use Integer_Lifting_Utilities;
        !            13: with Mixed_Volume_Computation;
        !            14: with Integer_Mixed_Subdivisions;         use Integer_Mixed_Subdivisions;
        !            15: with Integer_Mixed_Subdivisions_io;      use Integer_Mixed_Subdivisions_io;
        !            16: with Integer_Polyhedral_Continuation;    use Integer_Polyhedral_Continuation;
        !            17:
        !            18: package body BKK_Bound_Computations is
        !            19:
        !            20:   function BKK_by_Implicit_Lifting ( p : Poly_Sys ) return natural is
        !            21:
        !            22:     n : constant natural := p'length;
        !            23:     supports : Array_of_Lists(p'range) := Create(p);
        !            24:     bkk : constant natural := Volumes.Mixed_Volume(n,supports);
        !            25:
        !            26:   begin
        !            27:     Deep_Clear(supports);
        !            28:     return bkk;
        !            29:   end BKK_by_Implicit_Lifting;
        !            30:
        !            31:   function BKK_by_Implicit_Lifting ( file : file_type; p : Poly_Sys )
        !            32:                                    return natural is
        !            33:     n : constant natural := p'length;
        !            34:     supports : Array_of_Lists(p'range) := Create(p);
        !            35:     tv : Tree_of_Vectors;
        !            36:     bkk : natural;
        !            37:
        !            38:   begin
        !            39:     Volumes.Mixed_Volume(n,supports,tv,bkk);
        !            40:     new_line(file);
        !            41:     put_line(file,"The tree of useful directions : "); put(file,tv);
        !            42:     new_line(file);
        !            43:     Deep_Clear(supports); Clear(tv);
        !            44:     return bkk;
        !            45:   end BKK_by_Implicit_Lifting;
        !            46:
        !            47:   function BKK_by_Static_Lifting ( p : Poly_Sys ) return natural is
        !            48:
        !            49:     n : constant natural := p'length;
        !            50:     supports : Array_of_Lists(p'range) := Create(p);
        !            51:     bkk : constant natural := Mixed_Volume_Computation.Mixed_Volume(n,supports);
        !            52:
        !            53:   begin
        !            54:     Deep_Clear(supports);
        !            55:     return bkk;
        !            56:   end BKK_by_Static_Lifting;
        !            57:
        !            58:   function BKK_by_Static_Lifting ( file : file_type; p : Poly_Sys )
        !            59:                                  return natural is
        !            60:
        !            61:     n : constant natural := p'length;
        !            62:     supports : Array_of_Lists(p'range) := Create(p);
        !            63:     bkk : constant natural
        !            64:         := Mixed_Volume_Computation.Mixed_Volume(file,n,supports);
        !            65:
        !            66:   begin
        !            67:     Deep_Clear(supports);
        !            68:     return bkk;
        !            69:   end BKK_by_Static_Lifting;
        !            70:
        !            71:   function Solve_by_Implicit_Lifting ( p : Poly_Sys ) return Solution_List is
        !            72:
        !            73:     n : constant natural := p'length;
        !            74:     supports : Array_of_Lists(p'range) := Create(p);
        !            75:     tv : Tree_of_Vectors;
        !            76:     bkk : natural;
        !            77:     lp : Laur_Sys(p'range) := Polynomial_to_Laurent_System(p);
        !            78:     sols : Solution_List;
        !            79:
        !            80:   begin
        !            81:     Volumes.Mixed_Volume(n,supports,tv,bkk);
        !            82:     Deep_Clear(supports);
        !            83:     Mixed_Homotopy_Continuation.Solve(Standard_Output,lp,tv,bkk,sols);
        !            84:     Clear(tv); Clear(lp);
        !            85:     return sols;
        !            86:   end Solve_by_Implicit_Lifting;
        !            87:
        !            88:   function Solve_by_Implicit_Lifting ( file : file_type; p : Poly_Sys )
        !            89:                                      return Solution_List is
        !            90:
        !            91:     n : constant natural := p'length;
        !            92:     supports : Array_of_Lists(p'range) := Create(p);
        !            93:     tv : Tree_of_Vectors;
        !            94:     bkk : natural;
        !            95:     lp : Laur_Sys(p'range) := Polynomial_to_Laurent_System(p);
        !            96:     sols : Solution_List;
        !            97:
        !            98:   begin
        !            99:     Volumes.Mixed_Volume(n,supports,tv,bkk);
        !           100:     Deep_Clear(supports);
        !           101:     new_line(file);
        !           102:     put(file,"The BKK bound equals "); put(file,bkk,1); new_line(file);
        !           103:     put_line(file," with tree of useful directions : "); put(file,tv);
        !           104:     new_line(file);
        !           105:     Mixed_Homotopy_Continuation.Solve(file,lp,tv,bkk,sols);
        !           106:     Clear(tv); Clear(lp);
        !           107:     return sols;
        !           108:   end Solve_by_Implicit_Lifting;
        !           109:
        !           110:   function Solve_by_Static_Lifting ( p : Poly_Sys ) return Solution_List is
        !           111:
        !           112:     n : constant natural := p'length;
        !           113:     supports : Array_of_Lists(p'range) := Create(p);
        !           114:     mv : natural;
        !           115:     sols : Solution_List;
        !           116:     mix,per : Link_to_Vector;
        !           117:     mixsub : Mixed_Subdivision;
        !           118:     permp : Poly_Sys(p'range);
        !           119:     lp,pp : Laur_Sys(p'range);
        !           120:
        !           121:     use Mixed_Volume_Computation;
        !           122:
        !           123:   begin
        !           124:     Compute_Mixture(supports,mix,per);
        !           125:     permp := Permute(p,per); Clear(per);
        !           126:     declare
        !           127:       lifted : Array_of_Lists(mix'range);
        !           128:     begin
        !           129:       Mixed_Volume(n,mix.all,supports,lifted,mixsub,mv);
        !           130:       pp := Polynomial_to_Laurent_System(p);
        !           131:       lp := Perform_Lifting(n,mix.all,lifted,pp);
        !           132:       Mixed_Solve(lp,mix.all,mixsub,sols);
        !           133:       Deep_Clear(lifted);
        !           134:     end;
        !           135:     Clear(pp); Clear(lp);
        !           136:     Deep_Clear(supports);
        !           137:     Deep_Clear(mixsub);
        !           138:     Clear(mix);
        !           139:     return sols;
        !           140:   end Solve_by_Static_Lifting;
        !           141:
        !           142:   function Solve_by_Static_Lifting ( file : file_type; p : Poly_Sys )
        !           143:                                    return Solution_List is
        !           144:
        !           145:     n : constant natural := p'length;
        !           146:     supports : Array_of_Lists(p'range) := Create(p);
        !           147:     mv : natural;
        !           148:     sols : Solution_List;
        !           149:     mix,per : Link_to_Vector;
        !           150:     mixsub : Mixed_Subdivision;
        !           151:     permp : Poly_Sys(p'range);
        !           152:     lp,pp : Laur_Sys(p'range);
        !           153:
        !           154:     use Mixed_Volume_Computation;
        !           155:
        !           156:   begin
        !           157:     Compute_Mixture(supports,mix,per);
        !           158:     permp := Permute(p,per); Clear(per);
        !           159:     declare
        !           160:       lifted : Array_of_Lists(mix'range);
        !           161:     begin
        !           162:       Mixed_Volume(file,n,mix.all,supports,lifted,mixsub,mv);
        !           163:       put_line(file,"THE MIXED SUBDIVISION :");
        !           164:       put(file,n,mix.all,mixsub);
        !           165:       pp := Polynomial_to_Laurent_System(p);
        !           166:       lp := Perform_Lifting(n,mix.all,lifted,pp);
        !           167:       new_line(file); put_line(file,"POLYHEDRAL HOMOTOPY CONTINUATION");
        !           168:       Mixed_Solve(file,lp,mix.all,mixsub,sols);
        !           169:       Deep_Clear(lifted);
        !           170:     end;
        !           171:     Clear(pp); Clear(lp);
        !           172:     Deep_Clear(supports);
        !           173:     Deep_Clear(mixsub);
        !           174:     Clear(mix);
        !           175:     return sols;
        !           176:   end Solve_by_Static_Lifting;
        !           177:
        !           178: end BKK_Bound_Computations;

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