Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Implift/drivers_for_vertex_points.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_io; use Lists_of_Integer_Vectors_io;
4: with Power_Lists,Vertices; use Power_Lists,Vertices;
5:
6: package body Drivers_for_Vertex_Points is
7:
8: procedure Vertex_Points ( file : in file_type; l : in out List ) is
9:
10: timer : Timing_Widget;
11: res : List;
12:
13: begin
14: put_line(file,"**** THE SUPPORT ****");
15: new_line(file); put(file,l); new_line(file);
16: tstart(timer);
17: res := Vertex_Points(l);
18: tstop(timer);
19: new_line(file);
20: put_line(file,"**** THE VERTEX POINTS ****");
21: new_line(file); put(file,res); new_line(file);
22: put_line(file,"**** REDUCTION OF POINTS ****");
23: new_line(file);
24: put(file,"The number of points in the support : ");
25: put(file,Length_Of(l),1); new_line(file);
26: put(file,"The number of remaining vertex points : ");
27: put(file,Length_Of(res),1); new_line(file);
28: new_line(file);
29: print_times(file,timer,"computing the vertex points");
30: new_line(file);
31: Clear(l);
32: l := res;
33: end Vertex_Points;
34:
35: procedure Vertex_Points
36: ( file : in file_type; l : in out Array_of_Lists ) is
37:
38: timer : Timing_Widget;
39: res : Array_of_Lists(l'range);
40:
41: begin
42: tstart(timer);
43: for i in res'range loop
44: res(i) := Vertex_Points(l(i));
45: end loop;
46: tstop(timer);
47: new_line(file);
48: put_line(file,"**** THE VERTEX POINTS ****");
49: new_line(file);
50: for i in res'range loop
51: put(file,res(i)); new_line(file);
52: end loop;
53: put_line(file,"**** REDUCTION OF POINTS ****");
54: new_line(file);
55: for i in l'range loop
56: put(file,"The #points versus #vertices for support ");
57: put(file,i,1); put(file," : ");
58: put(file,Length_Of(l(i)),1); put(file," -> ");
59: put(file,Length_Of(res(i)),1); new_line(file);
60: end loop;
61: new_line(file);
62: print_times(file,timer,"computing the vertex points");
63: new_line(file);
64: for i in l'range loop
65: Clear(l(i));
66: l(i) := res(i);
67: end loop;
68: end Vertex_Points;
69:
70: procedure Vertex_Points
71: ( file : in file_type; mix : in Link_to_Vector;
72: l : in out Array_of_Lists ) is
73:
74: timer : Timing_Widget;
75: res : Array_of_Lists(l'range);
76: cnt : natural;
77:
78: begin
79: tstart(timer);
80: cnt := 1;
81: for i in mix'range loop
82: res(cnt) := Vertex_Points(l(cnt));
83: cnt := cnt + mix(i);
84: end loop;
85: tstop(timer);
86: new_line(file);
87: put_line(file,"**** THE VERTEX POINTS ****");
88: new_line(file);
89: cnt := 1;
90: for i in mix'range loop
91: put(file,res(cnt)); new_line(file);
92: cnt := cnt + mix(i);
93: end loop;
94: put_line(file,"**** REDUCTION OF POINTS ****");
95: new_line(file);
96: cnt := 1;
97: for i in mix'range loop
98: put(file,"The #points versus #vertices for support ");
99: put(file,cnt,1); put(file," : ");
100: put(file,Length_Of(l(cnt)),1); put(file," -> ");
101: put(file,Length_Of(res(cnt)),1); new_line(file);
102: cnt := cnt + mix(i);
103: end loop;
104: new_line(file);
105: print_times(file,timer,"computing the vertex points");
106: new_line(file);
107: cnt := 1;
108: for i in mix'range loop
109: for j in 0..(mix(i)-1) loop
110: Clear(l(cnt+j));
111: l(cnt+j) := res(cnt);
112: end loop;
113: cnt := cnt + mix(i);
114: end loop;
115: end Vertex_Points;
116:
117: procedure Vertex_Points
118: ( file : in file_type; p : in out Poly_Sys ) is
119:
120: l : Array_of_Lists(p'range) := Create(p);
121: res : Poly_Sys(p'range);
122:
123: begin
124: Vertex_Points(file,l);
125: res := Select_Terms(p,l);
126: Deep_Clear(l);
127: Clear(p); p := res;
128: end Vertex_Points;
129:
130: procedure Vertex_Points
131: ( file : in file_type; mix : in Link_to_Vector;
132: p : in out Poly_Sys ) is
133:
134: l : Array_of_Lists(p'range) := Create(p);
135: res : Poly_Sys(p'range);
136:
137: begin
138: Vertex_Points(file,mix,l);
139: res := Select_Terms(p,l);
140: Deep_Clear(l);
141: Clear(p); p := res;
142: end Vertex_Points;
143:
144: end Drivers_for_Vertex_Points;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>