08/13/2010, 07:39 PM
(This post was last modified: 08/13/2010, 09:55 PM by sheldonison.)

(08/12/2010, 04:43 AM)sheldonison Wrote: ... the sexp(z) is about 100-200x more accurate than the RiemannCircle function from which it is generated.correction The RiemannCircle(z) function is 100-200x more accurate than the sexp(z) from which it is generated -- however this data does include the renormalize update in the code, which improved convergence. In this case, all of the improvement appears to come from the Riemann mapping. But, as you'll see farther down, there is another alternative without the renormalize step where more of the improvement comes from the sexp(z) step!

Here is a table, showing how binary bits precision improves with each iteration. The initial seed has an accuracy of about 4 bits binary. The accuracy is for the lowest term in the Taylor series. The next term is about the same, for both Taylor series, and accuracy for higher order terms is more accurate (at least for awhile). I could plot it. Anyway, the point is the Riemann series is 7 or 8 bits more accurate than the sexp(z) series from which it is generated. The sexp(z) series has roughly the same accuracy as the Riemann function from which it is generated.

Riemann -8.41108211297959 bits

sexp(z) -9.11708328076014 bits

Riemann -15.1121338561072 bits

sexp(z) -15.1316170140021 bits

Riemann -22.4179232976446 bits

sexp(z) -22.4897567784208 bits

Riemann -30.0155349055434 bits

sexp(z) -30.1087094975908 bits

Riemann -37.7126066320302 bits

sexp(z) -37.8144609513923 bits

Riemann -45.4478768923269 bits

sexp(z) -45.5533186457503 bits

Riemann -53.2001314165620 bits

sexp(z) -53.3071463323265 bits

Riemann -60.9582476200045 bits

sexp(z) -61.0659125192666 bits

Riemann -68.7204813782899 bits

sexp(z) -68.8284373037337 bits

Riemann -76.4826669744581 bits

sexp(z) -76.5907565309966 bits

Riemann -84.2469508431293 bits

sexp(z) -84.3550685136293 bits

Riemann -92.0030319102508 bits

sexp(z) -92.1112561892320 bits

And here is a second table, without the renormalization step. The renormalize step is after the sexp(z) series is generated. It multiplies the sexp(z) series by whatever constant is required to force sexp(0.5)=exp(sexp(-0.5)). After 13 iterations, accuracy is at 69 bits, (as opposed to 92 bits). Here's what's interesting to me. This is a more elegant loop, without the somewhat ugly renormalize step. This leads to a more accurate sexp(z) series, but leads to less improvement overall, in the Riemann mapping, with a little singularity since sexp(0.5)<>exp(sexp(-0.5).

Overall, this approach took 17 or 18 iterations until convergence stopped at 92 bits, as opposed to 13 iterations. So, anyway, that's the data. Both routines are working to improve the results together.

Riemann -8.41108211297959

sexp(z) -9.11708328076014

Riemann -13.5881879738804

sexp(z) -17.1061334888054

Riemann -18.8839530119948

sexp(z) -21.4385286084149

Riemann -24.1419288537565

sexp(z) -26.8704129838725

Riemann -29.4092009637620

sexp(z) -32.1372761148881

Riemann -34.6784789286960

sexp(z) -37.4290603754555

Riemann -39.9512192183627

sexp(z) -42.7181894098719

Riemann -45.2270233243075

sexp(z) -48.0041816783103

Riemann -50.5061031443367

sexp(z) -53.3029348163809

Riemann -55.7895507636155

sexp(z) -58.6076934808030

Riemann -61.0771911987248

sexp(z) -63.9108585125742

Riemann -66.3693959721491

sexp(z) -69.2206441976381

Riemann -71.6653883035104

sexp(z) -74.5285659987165

Riemann -76.9672004092254

sexp(z) -79.8616209389427

Riemann -82.2744841556731

sexp(z) -85.1839830576327

Riemann -87.5851241316643

sexp(z) -90.5153257252998

Riemann -92.8193397830429

(convergence stops improving here)

Some other comments. The sexp(z) isn't even a superfunction. Its an approximation, with its accuracy as a superfunction decaying as the radius increases. Its most important property is that sexp(z) is real valued at the real axis.

Contrast that with the RiemannCircle function which is guaranteed by construction to be a true superfunction, with f(z+1)=exp(f(z)) for all z with imag(z)>=idelta. At idelta, it is the best superfunction matching sexp(z). But we only kept terms from the Taylor series, not the Laurent series, so it is not equal to sexp(z). It has guarenteed convergence for all imag(z)>=idelta.

- Sheldon