Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Precision check on [pentation.gp] SOLVED
#6
(06/29/2011, 10:36 PM)sheldonison Wrote:
(06/29/2011, 05:05 AM)sheldonison Wrote: .... my superfunction and its inverse are only approximately inverses of each other. And that in turn messes up the theta calculation so it stops converging..... But I really don't understand it and I'm not sure how to fix it.

So, its the inverse Schroeder equation that is not working for .... the inverse Schroeder equation which I use for the superfunction seems to conerge -- only up to a point -- and then stops converging. .... I guess this could be some kind of pari-gp artifact for this particular base, but I still don't understand it.... Also, for all other bases I've tried, both the superfunction and the inverse superfunction are well behaved. Only bases very close to this base are affected, within a 10^-15 radius.
It is a pari-gp precision artifact in the superfunction code that affects this one and only base. I ran into similar problems, so that in general, I needed to update the precision of the function manually once per iteration, before taking the inverse superfunction. But this problem is unique to this base, . Pari-gp gets confused on how much precision the real and imaginary parts of the superfunction have, because the real part of the fixed point is zero, and the imaginary part of the fixed point is non-zero. For the test code case in my previous post, initially, the imaginary part has 134 decimal digits of precision, and pari-gp quickly decides the real part has only 67 digits of precision. We need 67 decimal digits of precision at the end, for the superfunction to work. Pari-gp gradually loses more and more precision in the calculations, while iterating through the loop, and 2/3rds of the way through the iterations, the real and imag both have only 38 decimal digits of precision remaining, which apparently leaves about 29 decimal digits of precision in the result. For other bases, pari-gp keeps the same precision throughout the entire loop. Here is a code patch, which I think slows down the code significantly enough that I'm not ready to make the default. Maybe I need special code for this one case when ?
- Sheldon

Code:
/* patch for superf(z) loss of precision for base exp(pi/2) */
superf(z) = {
/* complex valued superfunction for base B, generated from the fixed point L */
  local (y);
  y=z-scnt;
  y=L+((LxlnB)^y); /* LxlnB=L*log(B) */
  for (i=1,scnt,
    y=exp(y*lnB);
    y=precision(y,precis); /* this is the patch */
  );
  return(y);
}

/* for comparison, current superf function, without the patch */
superf(z) = {
/* complex valued superfunction for base B, generated from the fixed point L */
  local (y);
  y=z-scnt;
  y=L+((LxlnB)^y); /* LxlnB=L*log(B) */
  for (i=1,scnt, y=exp(y*lnB));
  return(y);
}
Reply


Messages In This Thread
RE: Precision check on [pentation.gp] fails? - by sheldonison - 06/30/2011, 06:00 AM

Possibly Related Threads...
Thread Author Replies Views Last Post
  Attempt to find a limit point but each step needs doubling the precision... Gottfried 15 32,869 11/09/2014, 10:25 PM
Last Post: tommy1729
  Expansion of base-e pentation andydude 13 38,586 07/02/2011, 01:40 AM
Last Post: Cherrina_Pixie
  How to force precision in SAGE? jaydfox 2 7,795 08/18/2007, 11:08 PM
Last Post: jaydfox



Users browsing this thread: 1 Guest(s)