| Ruud H.G. van Tol on Wed, 03 Jan 2024 18:16:37 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: Can I speed up / reduce the stack used by this PARI/GP script? |
On 2024-01-03 02:13, Joe Slater wrote:
I wrote the following script to calculate terms of A060322. It does a decent job, but takes a lot of memory: at present I can only calculate around 70 terms. Can anyone suggest a way to push it further?
The first differences are in A131450.
A direct port of a variant of Jon E. Schoenfield's Magma-code there to PARI:
first(N) = {
my( a= Vec([1, 0, 0, 0], N), Y= [], X= [5], Z );
for( n=5, N
, Z= Y;
Y= X;
X= List();
foreach( Z, x, listput(X, 4*x+1 ));
foreach( Z, x, if( 1==x%6, listput(X, (4*x-1)\3)));
foreach( Y, x, if( 5==x%6, listput(X, (2*x-1)\3)));
X= Set(X);
a[n]= #X;
\\ print1( n, "=", a[n], ", " );
);
a;
}
? default(parisizemax,2^33)
*** Warning: new maximum stack size = 8589934592 (8192.000 Mbytes).
Then, this first(70) takes about 6 minutes, using 4 GB RAM.
For comparison, your A060322(70) takes about 4 minutes here, using 8 GB RAM.
So that delta-approach isn't really getting it much further.
-- Ruud