🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: sci.fractals
Article #440

Re: fractint periodicity question

#440
From: Jay R. Hill
Date: Thu, 12 Aug 1993 19:24
73 lines
3664 bytes
In article <93222.174612GHGAPAC@cc1.kuleuven.ac.be>, 
  <GHGAPAC@cc1.kuleuven.ac.be> writes:
[...]
|> I ported part ... of fractINT to macintosh. ... I have some help 
|> ... They told me something about periodicity checking, which is
|> ...  Can anyone give me some help about this principle ?
|> 
|>    hope you can help....    jer

Last February and March, as part of the Mandelbrot area calculation thread,
Robert Munafo <mrob@world.std.com> suggested periodicity checking for the
Ocie Mitchell <omitchel@fenris.claremont.edu> code.  Ocie's final routine
is:

int is_in(long double x, long double y, unsigned long int limit)
{
unsigned long int c,compare,next_compare;
long double xx,yy,x_squared,y_squared,d,last_x,last_y;
xx=yy=x_squared=y_squared=0;
compare=next_compare=1;
for (c=0;(c<limit) && (x_squared+y_squared<4);c++)
   {
   d=x_squared-y_squared+x;
   yy=(xx+xx)*yy+y;
   xx=d;
   next_compare--;
   if (!next_compare)
      {
      if ((last_x==xx) && (last_y==yy))
         return(1);
      last_x=xx;
      last_y=yy;
      compare++;
      next_compare=compare;
      }
   x_squared=xx*xx;
   y_squared=yy*yy;
   }
if (c==limit)
   return(1);
return(0);
}

where the complex point being tested is c = x + iy and limit is the most 
iterations to be used. The routine returns 1 if c is periodic.  If c is 
in a component whose period is p, you will need limit>p*p to detect it.
We used this idea in GIPPP#3.

Timothy Wegner (twegner@mwunix.mitre.org) wrote <twegner.745096662@mwunix>
> For example, if the last several pixels in a row had escaping orbits, it
> is best to disable the periodicity checking to avoid the overhead. As 
> soon as a point in the row is determined to be in the set, turn checking 
> back on. 

Turning on and off may be fine if your c values follow a line.  In GIPPP#3,
a quad dividing scheme is used, so we always keep periodicity checking on.  
A reason for leaving it on even if you are using inline sampling is the 
first 'in' point you get to will go to the limit.  If you are using a very 
high limit (limit>32000) you may find leaving checking on faster.

On about Jul 21 I posted two exact tests you can do before iterating which 
test for points in the period 1 cardioid or the period 2 bud.  I used these 
tests in GIPPP#3.  I also discussed how you can test for an orbit being 
chaotic without having to iterate to 'limit'.  Since the most interesting 
patterns are near component edges, these tests can save a lot of time.

Warmly,
Jay 'Not tonight honey, I'm got a chaotic orbit' Hill
-- 
{ hilljr@jupiter.saic.com } begin writeln(3*ln(640320)/sqrt(163):17:15) end.
void main(){double sqrt(), y=1/sqrt(2.), a=.5, m=1,z; int n=0;
for(;m*=2,z=sqrt(1-y*y),y=(1-z)/(1+z),a=a*(1+y)*(1+y)-m*y,n<4;n++);
printf("%17.15lf\n",1/a);}
Technical Details
Message-ID: <1993Aug12.192446.18556@ast.saic.com>
Path: arc1-ca.pugleaf.net!gmd.de!xlink.net!sol.ctr.columbia.edu!howland.reston.ans.net!agate!dog.ee.lbl.gov!network.ucsd.edu!mvb.saic.com!ast.saic.com!jupiter!hilljr
References: <93222.174612GHGAPAC@cc1.kuleuven.ac.be>

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: 10ed18,36d49e9c06d72c50
X-Google-Attributes: gid10ed18,public
X-Google-Thread: ff06e,6ffe01cb32cf5e9c,start
X-Google-Attributes: gidff06e,public
X-Google-ArrivalTime: 1993-08-12 13:22:34 PST
Newsgroups: sci.fractals,bit.listserv.frac-l
Path: arc1-ca.pugleaf.net!gmd.de!xlink.net!sol.ctr.columbia.edu!howland.reston.ans.net!agate!dog.ee.lbl.gov!network.ucsd.edu!mvb.saic.com!ast.saic.com!jupiter!hilljr
From: hilljr@jupiter.saic.com (Jay R. Hill)
Subject: Re: fractint periodicity question
Message-ID: <1993Aug12.192446.18556@ast.saic.com>
Followup-To: sci.fractals
Keywords: Mandelbrot orbit period checking
Lines: 73
Sender: news@ast.saic.com
Organization: SAIC
References:  <93222.174612GHGAPAC@cc1.kuleuven.ac.be>
Date: Thu, 12 Aug 1993 19:24:46 GMT