07/01/2011, 10:38 PM
(This post was last modified: 11/21/2011, 09:29 PM by sheldonison.)
(11/02/2010, 03:37 PM)sheldonison Wrote: I updated the pentation.gp code. The first thing the pentation code does is generate the sexp fixed point. The sexp fixed point gets very close to -2 as the base increases, and since there is a singularity at sexp(-2), that was breaking the previous code for bases>3. I decided to patch the slog function, and make a few other changes so that pentation at least works for bases<=10. It also works for all bases>=1.47, bases for which kneser.gp works.
This code includes all of the kneser.gp code, with the penation.gp code in one program, to make things simpler.
I also included the "sexpupfixed" routing, to iteratively generate the sexp base with a parabolic upper fixed point. The "sexpupfixed" routine requires about a dozen iterations of "init(B);loop" to get results accurate to 32 decimal digits, which takes about 15 minutes; I posted results for the value of the fixed point in this thread..
- Sheldon
Code:\r pentation.gp
init(2); /* generate kneser.gp sexp series */
genpent;
This is an update, with a fix for \( b=\exp(\pi/2) \), which was reported by Cherrina_Pixie in this thread. Its also includes a very new version of the core kneser.gp sexp code, which runs 5x-7x faster, mostly by generating a polynomial series for the Schroder and inverse Schroder functions for the superfunction and inverse superfunction routines. This eliminates many of the repeated iterations of log(log(log....) or exp(exp(exp))). The other thing I did was switch to using pari-gp built in polynomial handling. So that pentaylor, and sexptaylor, and slogtaylor all return pari-gp polynomials. Internal, the xtheta(x) and the xsexp(x) are stored as iteratively generated polynomials, as are the xsuperf, and xisuperf polynomails.
Because of the kneser.gp sexp(z) improvements included, the sexpupfixed example, that used to take a little over 15 minutes to generate the tetra-euler constant, now takes about 2 minutes and 15 seconds. The bigger improvement occurs on smaller bases.
Once I have a few more minor functions for bases<eta ported over, I will also put a new version of kneser.gp online.
Since there is some precision loss going from sexp(z) to pent(z), the new faster version of the code could be run in "\p 134" mode, to generate sexp(z) accurate to 67 decimal digits, and pent(z) accurate to 43 decimal digits, and would take or 53 seconds, for base e.
Code:
\r pentation.gp
\p 134
init; /* base e is the default */
loop; /* generate sexp(z) */
genpent; /* generate pent(z) */
fixed a typo with /p 134, in generating the superf/isuperf; the side effects might be rare
pentation.gp (Size: 41.29 KB / Downloads: 882)
Updated: This pentation.gp version has the kneser.gp version from the Sept 21st 2011 version of kneser.gp, with cosmetic and functional improvements.