08/11/2009, 05:16 PM

As has been discussed elsewhere, my change of base formula allows one to find fractional iterations of exponentiation for real bases greater than eta, provided one sticks to the reals.

Well, in order to find complex values, I decided there are two equally valid approaches. One is to create a very small (as in spacing) one-dimensional grid of points, with which one can approximate derivatives and hence create a power series expansion at a given real point. From there, one can then find complex iterations.

The other approach is to create a rather large grid (interval of unit length), and then use an appropriate slog function to get back another unit interval with a slightly perturbed grid. Fourier analysis will then give directly the cyclic "wobble" function. Combining with wobble function with the inverse of the aforementioned slog, one can get values for complex iterations.

Since I'm not sure how much accuracy the second method needs, and my best numerical solution to Andrew's slog is accurate to perhaps 25 decimal digits on the real line, I decided to try to the first approach: create a tiny grid and extract a power series from it.

My initial results are rather bizarre. I'm slowly building up until system memory becomes a limiting factor. So far, I've gotten the first 100 terms or so (128, but not sure about the last few). A root test seems to indicate that the radius of convergence is at most 0.5, perhaps even smaller.

This is frustrating, because this means I can't even perform an integer iteration! I might be able to perform a half iteration in both directions and then an integer iteration from the lower to see if it gets me to the upper. But that's not terribly helpful.

The function is continuous on the real line, so I'm lead to assume that there is a singularity somewhere just off the real line. But until I have a lot more terms, I probably won't be able to effectively track it down. Also, the root test was still slowly worsening before I ran out of terms, so the radius might even be less than 0.5!

Anyway, just a heads up. I'll post more details when I can confirm the accuracy of my results.

For the curious, I first found my change of base constant for x=1. I found that log(log(log(exp(exp(exp(1)))+1)+1)+1) is about 1.33030160653615. I then iteratively calculated log(x+1), performing 500 iterations. Using this value (about 0.00400318938047073), I then generated a 150-term interpolation function (using a FMA matrix based on Andrew's scripts). Using the interpolation funciton, I created a 129-point grid with spacing 2^[-108].

For each point in the grid, I then iteratively applied exp(x)-1, for 500 iterations. I then calculated log(log(log(exp(exp(exp(x)-1)-1)-1))), which gets me back to 1.0 for the middle point of the grid.

I then used the 129 points to calculate the first 128 derivatives. The last few derivatives have large errors (order of h^2, h^4, etc., where h is the grid spacing). I'm running a second calculation with a smaller grid spacing and more iterations, just to rule out numerical inaccuracies.

Assuming the accuracy is good, I'll try to get more terms, perhaps twice as many if I can manage it. I have to use tens of thousands of bits of precision, depending on the grid size and spacing. My rule of thumb is that I need enough bits for the grid size times the grid spacing in bits ( 128 * 108 bits in the previous example) plus more for desired precision (an extra 20% or more, to be safe).

Well, in order to find complex values, I decided there are two equally valid approaches. One is to create a very small (as in spacing) one-dimensional grid of points, with which one can approximate derivatives and hence create a power series expansion at a given real point. From there, one can then find complex iterations.

The other approach is to create a rather large grid (interval of unit length), and then use an appropriate slog function to get back another unit interval with a slightly perturbed grid. Fourier analysis will then give directly the cyclic "wobble" function. Combining with wobble function with the inverse of the aforementioned slog, one can get values for complex iterations.

Since I'm not sure how much accuracy the second method needs, and my best numerical solution to Andrew's slog is accurate to perhaps 25 decimal digits on the real line, I decided to try to the first approach: create a tiny grid and extract a power series from it.

My initial results are rather bizarre. I'm slowly building up until system memory becomes a limiting factor. So far, I've gotten the first 100 terms or so (128, but not sure about the last few). A root test seems to indicate that the radius of convergence is at most 0.5, perhaps even smaller.

This is frustrating, because this means I can't even perform an integer iteration! I might be able to perform a half iteration in both directions and then an integer iteration from the lower to see if it gets me to the upper. But that's not terribly helpful.

The function is continuous on the real line, so I'm lead to assume that there is a singularity somewhere just off the real line. But until I have a lot more terms, I probably won't be able to effectively track it down. Also, the root test was still slowly worsening before I ran out of terms, so the radius might even be less than 0.5!

Anyway, just a heads up. I'll post more details when I can confirm the accuracy of my results.

For the curious, I first found my change of base constant for x=1. I found that log(log(log(exp(exp(exp(1)))+1)+1)+1) is about 1.33030160653615. I then iteratively calculated log(x+1), performing 500 iterations. Using this value (about 0.00400318938047073), I then generated a 150-term interpolation function (using a FMA matrix based on Andrew's scripts). Using the interpolation funciton, I created a 129-point grid with spacing 2^[-108].

For each point in the grid, I then iteratively applied exp(x)-1, for 500 iterations. I then calculated log(log(log(exp(exp(exp(x)-1)-1)-1))), which gets me back to 1.0 for the middle point of the grid.

I then used the 129 points to calculate the first 128 derivatives. The last few derivatives have large errors (order of h^2, h^4, etc., where h is the grid spacing). I'm running a second calculation with a smaller grid spacing and more iterations, just to rule out numerical inaccuracies.

Assuming the accuracy is good, I'll try to get more terms, perhaps twice as many if I can manage it. I have to use tens of thousands of bits of precision, depending on the grid size and spacing. My rule of thumb is that I need enough bits for the grid size times the grid spacing in bits ( 128 * 108 bits in the previous example) plus more for desired precision (an extra 20% or more, to be safe).