with text_io; use text_io;
with Interfaces.C;
with Standard_Natural_Numbers; use Standard_Natural_Numbers;
with Standard_Natural_Numbers_io; use Standard_Natural_Numbers_io;
with Standard_Integer_Numbers; use Standard_Integer_Numbers;
with Standard_Integer_Numbers_io; use Standard_Integer_Numbers_io;
with C_Integer_io,C_Double_io; use C_Integer_io,C_Double_io;
with C_Integer_Arrays; use C_Integer_Arrays;
with C_Double_Arrays; use C_Double_Arrays;
with Standard_Complex_Polynomials; use Standard_Complex_Polynomials;
with Standard_Complex_Polynomials_io; use Standard_Complex_Polynomials_io;
with Coefficient_Support_Polynomials; use Coefficient_Support_Polynomials;
procedure cosupoly ( n : in integer32; s : in C_intarrs.Pointer;
m : in integer32; c : in C_dblarrs.Pointer ) is
-- DESCRIPTION :
-- The support vector s has range 0..n-1 and the coefficient
-- vector c has range 0..m-1.
sva : C_Integer_Array(0..Interfaces.C.size_T(n-1))
:= C_intarrs.Value(s,Interfaces.C.ptrdiff_T(n));
cva : C_Double_Array(0..Interfaces.C.size_T(m-1))
:= C_dblarrs.Value(c,Interfaces.C.ptrdiff_T(m));
numvars : constant natural32 := natural32(n)/(natural32(m)/2);
p : Poly := Create(numvars,cva,sva);
begin
put("The n is "); put(n,1);
put(" and m is "); put(m,1);
put(" number of variables : "); put(numvars,1); new_line;
-- put("sva'first : "); put(integer(sva'first),1); new_line;
-- put("sva'last : "); put(integer(sva'last),1); new_line;
-- put("cva'first : "); put(integer(cva'first),1); new_line;
-- put("cva'last : "); put(integer(cva'last),1); new_line;
put("The support :");
for i in 0..n-1 loop
put(" "); put(sva(Interfaces.C.size_T(i)),1);
end loop;
new_line;
put_line("The coefficients : ");
for i in 0..m-1 loop
put(" "); put(cva(Interfaces.C.size_T(i)));
new_line;
end loop;
put_line("The polynomial defined by coefficients and support : ");
put_line(p);
end cosupoly;