Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Product/random_product_system_io.adb, Revision 1.1.1.1
1.1 maekawa 1: with integer_io;
2: with Standard_Floating_Numbers; use Standard_Floating_Numbers;
3: with Standard_Floating_Numbers_io; use Standard_Floating_Numbers_io;
4: with Standard_Complex_Numbers; use Standard_Complex_Numbers;
5: with Standard_Complex_Vectors; use Standard_Complex_Vectors;
6: with Standard_Natural_Vectors;
7: with Symbol_Table,Symbol_Table_io;
8: with Standard_Complex_Polynomials; use Standard_Complex_Polynomials;
9: with Standard_Complex_Polynomials_io; use Standard_Complex_Polynomials_io;
10: with Standard_Complex_Poly_Systems; use Standard_Complex_Poly_Systems;
11: with Standard_Complex_Poly_Systems_io; use Standard_Complex_Poly_Systems_io;
12: with Random_Product_System;
13:
14: package body Random_Product_System_io is
15:
16: procedure get ( n : out natural ) is
17: begin
18: Random_Product_System_io.get(Standard_Input,n);
19: end get;
20:
21: procedure get ( file : in file_type; n : out natural ) is
22:
23: nn : natural;
24:
25: begin
26: integer_io.get(file,nn); n := nn;
27: Random_Product_System.Init(nn);
28: declare
29: h : Vector(0..nn);
30: pp : Poly;
31: d : degrees := new Standard_Natural_Vectors.Vector'(1..nn => 0);
32: stop : boolean;
33: begin
34: get(file,nn,pp); Clear(pp);
35: for i in 1..nn loop
36: stop := false;
37: while not stop loop
38: get(file,nn,pp);
39: stop := (pp = Null_Poly);
40: exit when stop;
41: h(0) := Coeff(pp,d);
42: for j in 1..nn loop
43: d(j) := 1;
44: h(j) := Coeff(pp,d);
45: d(j) := 0;
46: end loop;
47: Random_Product_System.Add_Hyperplane(i,h);
48: end loop;
49: end loop;
50: end;
51: end get;
52:
53: procedure put ( n,fore,after,exp : in natural ) is
54: begin
55: Random_Product_System_io.put(Standard_Output,n,fore,after,exp);
56: end put;
57:
58: procedure put ( file : in file_type; n,fore,after,exp : in natural ) is
59:
60: h : Vector(0..n);
61:
62: procedure Write_Number ( file : in file_type; x : in Complex_Number ) is
63: begin
64: if IMAG_PART(x) + 1.0 = 1.0
65: then put(file,REAL_PART(x),fore,after,exp);
66: else put(file,'(');
67: put(file,REAL_PART(x),fore,after,exp);
68: put(file,'+');
69: put(file,IMAG_PART(x),fore,after,exp);
70: put(file,')');
71: end if;
72: end Write_Number;
73:
74: begin
75: for i in 1..n loop
76: put(file,"The hyperplanes for the "); integer_io.put(file,i,1);
77: put_line(file,"th equation :");
78: for j in 1..Random_Product_System.Number_Of_Hyperplanes(i) loop
79: h := Random_Product_System.Get_Hyperplane(i,j);
80: put(file,' ');
81: for k in 1..n loop
82: Write_Number(file,h(k));
83: put(file,'*');
84: Symbol_Table_io.put(file,Symbol_Table.Get(k));
85: put(file," + ");
86: end loop;
87: Write_Number(file,h(0));
88: new_line(file);
89: end loop;
90: end loop;
91: end put;
92:
93: end Random_Product_System_io;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>