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

Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Stalift/drivers_for_mixed_contributions.adb, Revision 1.1.1.1

1.1       maekawa     1: with integer_io;                         use integer_io;
                      2: with Timing_Package;                     use Timing_Package;
                      3: with Lists_of_Integer_Vectors;           use Lists_of_Integer_Vectors;
                      4: with Contributions_to_Mixed_Volume;      use Contributions_to_Mixed_Volume;
                      5:
                      6: package body Drivers_for_Mixed_Contributions is
                      7:
                      8:   procedure Count_Zero_Contributions
                      9:               ( file : in file_type; l,nl : in Array_of_Lists;
                     10:                 nred : out natural ) is
                     11:
                     12:   -- DESCRIPTION :
                     13:   --   Counts the number of zero contributions per component and reports
                     14:   --   the cardinalities on file.
                     15:
                     16:     res,inc : natural := 0;
                     17:
                     18:   begin
                     19:     new_line(file);
                     20:     put_line(file,"#Eliminated points per component : ");
                     21:     for i in l'range loop
                     22:       inc := Length_Of(l(i)) - Length_Of(nl(i));
                     23:       put(file,"  "); put(file,inc,1);
                     24:       res := res + inc;
                     25:     end loop;
                     26:     new_line(file);
                     27:     nred := res;
                     28:   end Count_Zero_Contributions;
                     29:
                     30: -- TARGET ROUTINES :
                     31:
                     32:   procedure Once_Simple_Sweep
                     33:               ( file : in file_type; l : in out Array_of_Lists;
                     34:                 nred : out natural ) is
                     35:
                     36:     nl : Array_of_Lists(l'range);
                     37:     timer : Timing_Widget;
                     38:
                     39:   begin
                     40:     tstart(timer);
                     41:     nl := Simple_Sweep(l);
                     42:     tstop(timer);
                     43:     Count_Zero_Contributions(file,l,nl,nred);
                     44:     new_line(file);
                     45:     print_times(file,timer,"one simple sweep");
                     46:     new_line(file);
                     47:     Copy(nl,l); Deep_Clear(nl);
                     48:   end Once_Simple_Sweep;
                     49:
                     50:   procedure Once_Exhaustive_Sweep
                     51:               ( file : in file_type; l : in out Array_of_Lists;
                     52:                 nred : out natural ) is
                     53:
                     54:     nl : Array_of_Lists(l'range);
                     55:     timer : Timing_Widget;
                     56:
                     57:   begin
                     58:     tstart(timer);
                     59:     nl := Exhaustive_Sweep(l);
                     60:     tstop(timer);
                     61:     Count_Zero_Contributions(file,l,nl,nred);
                     62:     new_line(file);
                     63:     print_times(file,timer,"exhaustive sweep");
                     64:     new_line(file);
                     65:     Copy(nl,l); Deep_Clear(nl);
                     66:   end Once_Exhaustive_Sweep;
                     67:
                     68:   procedure Full_Simple_Sweep
                     69:               ( file : in file_type; l : in out Array_of_Lists;
                     70:                 nred : out natural ) is
                     71:
                     72:     totnred,wrknred : natural;
                     73:     timer : Timing_Widget;
                     74:
                     75:   begin
                     76:     totnred := 0;
                     77:     tstart(timer);
                     78:     loop
                     79:       Once_Simple_Sweep(file,l,wrknred);
                     80:       exit when (wrknred = 0);
                     81:       totnred := totnred + wrknred;
                     82:     end loop;
                     83:     tstop(timer);
                     84:     new_line(file);
                     85:     print_times(file,timer,"full simple sweep");
                     86:     new_line(file);
                     87:     nred := totnred;
                     88:   end Full_Simple_Sweep;
                     89:
                     90:   procedure Full_Exhaustive_Sweep
                     91:               ( file : in file_type; l : in out Array_of_Lists;
                     92:                 nred : out natural ) is
                     93:
                     94:     totnred,wrknred : natural;
                     95:     timer : Timing_Widget;
                     96:
                     97:   begin
                     98:     totnred := 0;
                     99:     tstart(timer);
                    100:     loop
                    101:       Once_Exhaustive_Sweep(file,l,wrknred);
                    102:       exit when (wrknred = 0);
                    103:       totnred := totnred + wrknred;
                    104:     end loop;
                    105:     tstop(timer);
                    106:     new_line(file);
                    107:     print_times(file,timer,"full exhaustive sweep");
                    108:     new_line(file);
                    109:     nred := totnred;
                    110:   end Full_Exhaustive_Sweep;
                    111:
                    112: end Drivers_for_Mixed_Contributions;

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