with Standard_Complex_Numbers; use Standard_Complex_Numbers;
with Standard_Natural_Vectors;
package body Standard_Laur_Poly_Convertors is
function Laurent_Polynomial_to_Polynomial
( p : Standard_Complex_Laur_Polys.Poly )
return Standard_Complex_Polynomials.Poly is
res : Standard_Complex_Polynomials.Poly;
tt : Standard_Complex_Laur_Polys.Term;
begin
Laurent_Polynomial_to_Polynomial(p,tt,res);
Standard_Complex_Laur_Polys.Clear(tt);
return res;
end Laurent_Polynomial_to_Polynomial;
procedure Laurent_Polynomial_to_Polynomial
( l : in Standard_Complex_Laur_Polys.Poly;
t : out Standard_Complex_Laur_Polys.Term;
p : out Standard_Complex_Polynomials.Poly ) is
min : Standard_Complex_Laur_Polys.Degrees
:= Standard_Complex_Laur_Polys.Minimal_Degrees(l);
tt : Standard_Complex_Laur_Polys.Term;
begin
for i in min'range loop
min(i) := -min(i);
end loop;
tt.cf := Create(1.0);
tt.dg := min;
p := Laurent_Polynomial_to_Polynomial(l,tt); t := tt;
end Laurent_Polynomial_to_Polynomial;
function Laurent_Polynomial_to_Polynomial
( l : Standard_Complex_Laur_Polys.Poly;
t : Standard_Complex_Laur_Polys.Term )
return Standard_Complex_Polynomials.Poly is
res : Standard_Complex_Polynomials.Poly;
use Standard_Complex_Laur_Polys;
procedure Laurent_Term_to_Term ( tt : in Term; cont : out boolean ) is
rt : Standard_Complex_Polynomials.Term;
begin
rt.cf := tt.cf;
rt.dg := new Standard_Natural_Vectors.Vector(tt.dg'range);
for i in tt.dg'range loop
rt.dg(i) := tt.dg(i) + t.dg(i);
end loop;
Standard_Complex_Polynomials.Add(res,rt);
Standard_Complex_Polynomials.Clear(rt);
cont := true;
end Laurent_Term_to_Term;
procedure LP2P is new Visiting_Iterator(Laurent_Term_to_Term);
begin
LP2P(l);
return res;
end Laurent_Polynomial_to_Polynomial;
function Laurent_to_Polynomial_System ( p : Laur_Sys ) return Poly_Sys is
res : Poly_Sys(p'range);
begin
for i in p'range loop
res(i) := Laurent_Polynomial_to_Polynomial(p(i));
end loop;
return res;
end Laurent_to_Polynomial_System;
end Standard_Laur_Poly_Convertors;