Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Polynomials/standard_laur_poly_convertors.adb, Revision 1.1.1.1
1.1 maekawa 1: with Standard_Complex_Numbers; use Standard_Complex_Numbers;
2: with Standard_Natural_Vectors;
3:
4: package body Standard_Laur_Poly_Convertors is
5:
6: function Laurent_Polynomial_to_Polynomial
7: ( p : Standard_Complex_Laur_Polys.Poly )
8: return Standard_Complex_Polynomials.Poly is
9:
10: res : Standard_Complex_Polynomials.Poly;
11: tt : Standard_Complex_Laur_Polys.Term;
12:
13: begin
14: Laurent_Polynomial_to_Polynomial(p,tt,res);
15: Standard_Complex_Laur_Polys.Clear(tt);
16: return res;
17: end Laurent_Polynomial_to_Polynomial;
18:
19: procedure Laurent_Polynomial_to_Polynomial
20: ( l : in Standard_Complex_Laur_Polys.Poly;
21: t : out Standard_Complex_Laur_Polys.Term;
22: p : out Standard_Complex_Polynomials.Poly ) is
23:
24: min : Standard_Complex_Laur_Polys.Degrees
25: := Standard_Complex_Laur_Polys.Minimal_Degrees(l);
26: tt : Standard_Complex_Laur_Polys.Term;
27:
28: begin
29: for i in min'range loop
30: min(i) := -min(i);
31: end loop;
32: tt.cf := Create(1.0);
33: tt.dg := min;
34: p := Laurent_Polynomial_to_Polynomial(l,tt); t := tt;
35: end Laurent_Polynomial_to_Polynomial;
36:
37: function Laurent_Polynomial_to_Polynomial
38: ( l : Standard_Complex_Laur_Polys.Poly;
39: t : Standard_Complex_Laur_Polys.Term )
40: return Standard_Complex_Polynomials.Poly is
41:
42: res : Standard_Complex_Polynomials.Poly;
43: use Standard_Complex_Laur_Polys;
44:
45: procedure Laurent_Term_to_Term ( tt : in Term; cont : out boolean ) is
46:
47: rt : Standard_Complex_Polynomials.Term;
48:
49: begin
50: rt.cf := tt.cf;
51: rt.dg := new Standard_Natural_Vectors.Vector(tt.dg'range);
52: for i in tt.dg'range loop
53: rt.dg(i) := tt.dg(i) + t.dg(i);
54: end loop;
55: Standard_Complex_Polynomials.Add(res,rt);
56: Standard_Complex_Polynomials.Clear(rt);
57: cont := true;
58: end Laurent_Term_to_Term;
59: procedure LP2P is new Visiting_Iterator(Laurent_Term_to_Term);
60:
61: begin
62: LP2P(l);
63: return res;
64: end Laurent_Polynomial_to_Polynomial;
65:
66: function Laurent_to_Polynomial_System ( p : Laur_Sys ) return Poly_Sys is
67:
68: res : Poly_Sys(p'range);
69:
70: begin
71: for i in p'range loop
72: res(i) := Laurent_Polynomial_to_Polynomial(p(i));
73: end loop;
74: return res;
75: end Laurent_to_Polynomial_System;
76:
77: end Standard_Laur_Poly_Convertors;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>