Bill Allombert on Fri, 30 Dec 2016 18:24:45 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Getting a very large polynomial into pari/gp


On Fri, Dec 30, 2016 at 11:31:55AM +0100, Karim Belabas wrote:
> * Neill Clift [2016-12-30 06:17]:
> > Hi,
> > I want to do a gcd with two polynomials with 16 million coefficients mod 
> > a large 64 bit prime.
> > Playing with gp with some sparse polynomials it looks like it can do the 
> > calculation.
> > If I try to read in a dense polynomial of large size though gp overflows 
> > its stack (runs out of thread stack space, not a buffer overflow or gp 
> > stack).
> > I assume your parser is putting a lot of data on the thread stack.
> > I am using a command like this:
> > 
> > gp > a = read("a.gp")
> > 
> > I am doing this on windows.
> > Is there some kind of raw read or similar that will let me get a large 
> > polynomial into gp? I can put the data into different formats rather 
> > than the symbolic format I am trying currently.
> 
> 1) The most natural way would be to just (re)create the polynomials
> inside gp.
> 
> 2) If this is not possible, you can try a vector of coefficients. Then
>   a = read("a.gp");
>   A = Pol(a); \\ leading coeff in a[1], etc.

Or maybe better: write a file with one coefficient by line, and then do
a = readvec("a.gp");
A = Pol(a);

Cheers,
Bill.