Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Implift/ts_binsolve.adb, Revision 1.1.1.1
1.1 maekawa 1: with text_io,integer_io; use text_io,integer_io;
2: with Standard_Floating_Numbers_io; use Standard_Floating_Numbers_io;
3: with Standard_Complex_Numbers; use Standard_Complex_Numbers;
4: with Standard_Complex_Numbers_io; use Standard_Complex_Numbers_io;
5: with Standard_Complex_Vectors; use Standard_Complex_Vectors;
6: with Standard_Complex_Vectors_io; use Standard_Complex_Vectors_io;
7: with Standard_Integer_VecVecs; use Standard_Integer_VecVecs;
8: with Standard_Integer_VecVecs_io; use Standard_Integer_VecVecs_io;
9: with Standard_Complex_Solutions; use Standard_Complex_Solutions;
10: with Standard_Complex_Solutions_io; use Standard_Complex_Solutions_io;
11: with Binomial_System_Solvers; use Binomial_System_Solvers;
12:
13: procedure ts_binsolve is
14:
15: -- DESCRIPTION :
16: -- Test on the solver of binomial systems.
17:
18: ans : character;
19: n : natural;
20:
21: procedure put_Bar is
22: begin
23: for i in 1..50 loop
24: put('*');
25: end loop;
26: new_line;
27: end put_Bar;
28:
29: procedure put ( n : in natural; v : in Vector; sols : in Solution_List ) is
30:
31: tmp : Solution_List;
32: s : Solution(n);
33: nb : natural;
34:
35: begin
36: tmp := sols;
37: nb := 1;
38: while not Is_Null(tmp) loop
39: s := Head_Of(tmp).all;
40: put_Bar;
41: put("Solution number "); put(nb,1); put_line(" :"); put(s);
42: put("The residual : "); put(REAL_PART(v(nb))); new_line;
43: nb := nb + 1;
44: put_Bar;
45: tmp := Tail_Of(tmp);
46: end loop;
47: end put;
48:
49: begin
50: loop
51: put("Give the dimension : "); get(n);
52: declare
53: vv : VecVec(1..n);
54: cv : Standard_Complex_Vectors.Vector(1..n);
55: sols : Solution_List;
56: begin
57: put("Give "); put(n,1); put(' '); put_line("integer vectors :");
58: get(n,vv);
59: put_line("Give a vector of nonzero constants : ");
60: get(cv);
61: Solve(vv,cv,n,sols);
62: declare
63: nb : natural := Length_Of(sols);
64: res : Standard_Complex_Vectors.Vector(1..nb);
65: begin
66: Residuals(vv,cv,n,sols,res);
67: put("There are "); put(nb,1); put_line(" solutions :");
68: put(n,res,sols);
69: end;
70: Clear(sols);
71: end;
72: put("Do you want more tests ? (y/n) "); get(ans);
73: exit when ans /= 'y';
74: end loop;
75: end ts_binsolve;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>