Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
new fatou.gp program
#11
I have just downloaded it from somewhere. It includes the following:

\r kneser.gp

/* hyperoperators */
h(a,s,b) = {
fatbx(a,s-1,b);
}
/* root inverse of hyperops */
hr(a,s,b) = {
invfatbx(a,s-1,b);
}
/* support function for fatbx and invfatbx, allowing to have a,b<e */
expeta(t,a) = {
if (real(a)<exp(1), sexpeta(invsexpeta(a)+t), cheta(invcheta(a)+t));
}
/* fatbx main function of calculation of hyperops */
fatbx(a,t,b) = {
if (real(t)<1, return (expeta(t,expeta(-t,a)+expeta(-t,b))));
if (real(t)>=1, return (expeta(t-1,b*expeta(1-t,a))));
}
/* invfatbx main function of calculation of root inverse of hyperops */
invfatbx(a,t,b) = {
if (real(t)<1, return (expeta(t,expeta(-t,a)-expeta(-t,b))));
if (real(t)>=1, return (expeta(t-1,(1/b)*expeta(1-t,a))));
}

It might be incorrect according to the graph.
Xorter Unizo
Reply
#12
(01/02/2017, 02:26 PM)Xorter Wrote: I have just downloaded it from somewhere. It includes the following:

\r kneser.gp
/* hyperoperators */
h(a,s,b) = ....

It might be incorrect according to the graph.

This was a reply to me asking, "I'm not familiar with H(x); sorry. How do you define/implement it? What function in fatou.gp are you using?"

First off, this post should never have been posted here in the fatou.gp discussion since Xorter's H function has nothing to do with fatou.gp.  Xorter's H function has two different definitions (ignoring the subtle use of both superfunctions of eta) depending on whether s<2 or s>=2.   Let's focus on only on the 2nd definition for S>=2.  For integer values of S, Xorter's pari-gp code for H(a,s,b) is equivalent to the following equation.


For s=2, this is just b*a which is as Xorter expected
For s=3, this is so this is as Xorter expected.
So it "works" for integer values of 2,3.  But Xorter "complains" about other values making a funny graph.
For s=4: H(2,4,3) = 11.713
For s=5: H(2,5,3) = 11.103
For s=6: H(2,6,3) = 3.411
So H(2,s,3) is doing exactly what Xorter's equation says it should do, with S extended to non-integer values of S by using the superfunction and the inverse superfunction of eta.  Of course its "incorrect" according to the graph... because H(2,s,3) is only "correct" at s=2 and s=3, but not other integer values of S, where H has nothing to do with the extended hyper operator Xorter claims it should be!
- Sheldon
Reply
#13
I posted a new version of fatou.gp; to download, see the first post.  The most important addition to the program is a routine called "matrix_ir(k,n,m), where k is log(log(B))+1 if B is the tetration base.  Internally, fatou iterates exp(z)-1+k near the parabolic fixed point.  The matrix_ir routine solves a matrix equivalent to finding a solution on n sample points that matches exactly with the theta approximation, or abel(f(z))-1 or abel(finv(z))+1.  The sexpinit(B) is still 2-2.5x faster than the matrix solution on average, but for some complicated complex bases, the times are closer.  I also added loop1(n), which is used after loop(k) to keep iterating the loop solution without adding any additional sample points.  Then loop1 will converge to the exact same solution as matrix_ir generates!  I will add more details later on the matrix_ir solution, and how it samples a set of points to get the exact same kind of convergence as sexpinit/loop.  

The output has been cleaned up, and shows 32 bit decimals by default now.  Precision is reported in number of decimal digits now.  With 64-bit pari-gp implementations, its still generally less than 0.6 seconds for an sexpinit(B), but if you are calculating lots of bases, try limitp=16 to speed up computation by another factor of 5x with >16 decimal digits precision.  Perhaps you want to also enable quietmode=1.

I had to change how the guts of fatou.gp worked to allow matrix_ir to work.  These changes are extensive but mostly invisible.  Some bases require a couple of more iterations than before.  Precision will generally be higher than the last version for all bases.   The new version converges to full precision on far more bases than the old version, including real bases up to 39000, and complex bases like sexpinit(I) and sexpinit(-exp(-2)) converge fully as well.  I cleaned up the help menus, and the output doesn't show the imaginary part for real bases.  In general, the program is more stable than it used to be over a much wider range of real and complex bases.  For real bases>39000, try setting ctr=19/20.  This allows real bases up to about sexpinit(10^6). The only thing kneser.gp does better than fatou.gp is real bases>10^6, but I am no longer supporting or updating kneser.gp.

My old pentation.gp program is broke with the latest versions of pari-gp, and since I'm not supporting kneser.gp I added an improved more elegant version of pentation in fatou.gp.  Look at help_pentation().  I added support for eta=exp(1/e); see help_eta.  Internally, I implemented Ecalle's formal assymptotic solution for exp(x)-1, the parabolic base equivalent to eta.
- Sheldon
Reply


Possibly Related Threads...
Thread Author Replies Views Last Post
  Mathematica program for tetration based on the series with q-binomial coefficients Vladimir Reshetnikov 0 588 01/13/2017, 10:51 PM
Last Post: Vladimir Reshetnikov
  complex base tetration program sheldonison 23 20,733 10/26/2016, 10:02 AM
Last Post: Gottfried
  C++ program for generatin complex map in EPS format MorgothV8 0 1,210 09/17/2014, 04:14 PM
Last Post: MorgothV8



Users browsing this thread: 1 Guest(s)