06/09/2014, 01:16 PM
(This post was last modified: 06/09/2014, 02:05 PM by sheldonison.)
(06/09/2014, 12:20 PM)mike3 Wrote: IMPORTANT!
I just was running some more tests and I've discovered that these results may not be trustworthy. Apparently, increasing the precision on sheldonison's Kneser PARI/GP program does not seem to make it necessarily generate more than 64 digits of the tetrational. So results requiring high precision seem to be suspect. I'll need to figure out how to get more digits out of the code before trying again. I had done a "\p 128" and it only would display 64 digits -- upon "\p 128"ing again to force it to cough up more digits, I found all the succeeding digits after the initial 64 were different from those I got for "\p 256", suggesting it is not getting beyond 64 digits.
I'm not sure how to get the program to give a correct result with more than 64 digits -- sheldonison?
Hey Mike,
After changing the precision with "\p 134" or any large number, type in
"init(exp(1));" You will get approximately n/2 decimal digits for the results, limited by the Schroeder functions algorithm.
Code:
\p 134
init(exp(1));This regenerates the tetration system with arbitrarily high precision numbers. The "init(exp(1));" after the default of "\p 67" takes 3 or 4 seconds. After "\p 134" takes about 30 seconds, and after "\p 221" takes 3-4 minutes. There s an out of memory (>4meg) error around "\p 230" or so. But I have used "\p 512" I think with 30 minutes computer time. The out of memory error is due to initializing my base eta approximation function, in the initcheta code. Here is a patch to remove that memory error.
Code:
initcheta() = {
/* automatically initialize cheta during program initialization */
local(z,local);
z=1.0;
precis=precision(z);
/* initialization for xcheta and xsexpeta required for cheta, sexpeta, invcheta, invsexpeta functions */
/* initalizes to match precis, 50 digits/67 digits, this routine aims for 75% precision */
/* called from init(initbase) when program is loaded, and when init detects the precision has changed */
if (precis<=180,
chterms = 2*(floor(precis/2)-8)+1;
,
chterms = 2*(floor(180/2)-8)+1;
);
chdelta = (chterms-1)*2;
xcheta = genpoly(chterms,chdelta,0);
invchetr = imag(cheta(-chdelta+(chterms-1)*I/2));
invprecis = 10000.*(10^-chterms);
/* invprecis = 100*abs(chetaerr(I+0.5,chdelta)); */
/* invprecis = 1E-47; */
chetadlt=cheta(-chdelta);
xsexpeta = genpoly(chterms,chdelta,1);
sxpetadlt=sexpeta(chdelta);
return(0);
}
- Sheldon

