NOTICE: Citizendium is still being set up on its newer server, treat as a beta for now; please see here for more. Citizendium - a community developing a quality comprehensive compendium of knowledge, online and free. Click here to join and contribute—free Click here to participate in the November 2016 election. CZ thanks our previous donors. Donate here. Treasurer's Financial Report -- Thanks to our content contributors. --

# Tetration/Code/AsymptoticParameters00

//Sourse that draws figure

//
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define DB double
#include <complex.h>
#define z_type complex<double>
#define Re(x) x.real()
#define Im(x) x.imag()
#define I z_type(0.,1.)
void ado(FILE *O, int X, int Y)
fprintf(O,"%c%cBoundingBox: 0 0 %d %d\n",'%','%',X,Y);
fprintf(O,"/M {moveto} bind def\n");
fprintf(O,"/L {lineto} bind def\n");
fprintf(O,"/S {stroke} bind def\n");
fprintf(O,"/s {show newpath} bind def\n");
fprintf(O,"/C {closepath} bind def\n");
fprintf(O,"/F {fill} bind def\n");
fprintf(O,"/o {.6 0 360 arc C F} bind def\n");
fprintf(O,"/O { 2 0 360 arc C S} bind def\n");
fprintf(O,"/times-Roman findfont 6 scalefont setfont\n");
fprintf(O,"/W {setlinewidth} bind def\n");
fprintf(O,"/RGB {setrgbcolor} bind def\n");}

z_type lob(DB LB) {	int n; z_type s0,s1; s1=z_type(1.,1.); s0=s1;
for(n=0;n<800;n++)
{ s1=log(s1)/LB; if( abs(s0-s1) < 1.e-14) break;
s0=s1;	}
return s1;
}

#define DO(x,y) for(x=0;x<y;x++)
main(int nar, char*ar[] ){
printf("%s , TetrationTarameters Copyleft 2008 by Dmitrii Kouznetsov\n",ar[0]);
printf("output: TetrationParameters.eps\n");
fprintf(o,"10 40 translate\n");
#define M(x,y) fprintf(o,"%5.2f %5.2f M\n",100.*(x),10.*(y));
#define L(x,y) fprintf(o,"%5.2f %5.2f L\n",100.*(x),10.*(y));
#define o(x,y) fprintf(o,"%5.2f %5.2f o\n",100.*(x),10.*(y));
M(0,-3)L(0,7) //M(0,0)L(2.1,0)
fprintf(o,".2 W S\n");
int n; DB x,y,t;
M(-.06,M_E)L(2.41,M_E)
for(n=0;n<7;n++){M(0,n)L(2.4,n)}  fprintf(o,".06 W S\n");
for(n=0;n<7;n++){M(-.04,n-.18) fprintf(o,"(%1d)s\n",n);}
M(-.09,M_E-.16) fprintf(o,"(e)s\n");

M(log(2.)/2,-2.3)L(log(2.)/2,6)
M(1./M_E,   -1.6)L(1./M_E,  9)
M(log(2.),   -.9)L(log(2.),  6)
M(log(10.), -1.8)L(log(10.),  6)
for(n=0;n<25;n++){x=.1*n;M(x,0)L(x,6)}
fprintf(o,".06 W S\n");
for(n=2;n<23;n+=2){x=.1*n;M(x-.04,-.6) fprintf(o,"(%3.1f)s\n",x);}
M(log(2.)/2-.099, -2.7)	fprintf(o,"(ln[2]/2)s\n");
M(1./M_E  -.024 , -1.9) 	fprintf(o,"(1/e)s\n");
M(log(2.)  -.05, -1.) 	fprintf(o,"(ln[2])s\n");
M(log(10.)  -.03,-2) 	fprintf(o,"(ln[10])s\n");

fprintf(o,"0 0 0 RGB \n"); // eigenvalues
DO(n,45) {t=.001+.05*n; x=t/exp(t); y=exp(t); if(n==0)M(x,y) else L(x,y) }
fprintf(o,".2 W S\n"); // eigenvalues

fprintf(o,"0 .9 0 RGB \n"); //grow rate
DO(n,50) { t=.01+.001*n*exp(.1*n); x=t/exp(t); y=-2.*log(t); if(n==0)M(x,y) else L(x,y);}
fprintf(o,".8 W S\n"); // grow rate

fprintf(o,"0 0 1 RGB \n"); // period, growth
DO(n,50) { t=.0001+.0008*n*(1+.5*n)/(1+.02*n); x=t/exp(t); y=2.*M_PI/log(t); o(x,-y);}

fprintf(o,"1 0 0 RGB \n"); // period, decay
DO(n,33) { t=2.+.05*n*exp(.1*n); x=t/exp(t); y=2.*M_PI/log(t); o(x,y);}

///////////////////////COMPLEX BEGIN//////////////////////////
DB L;  z_type LB,Lb,q;

//real part
M(1/M_E,M_E)
for(n=2;n<209;n+=4) {x=1./M_E+0.01*n;  Lb=lob(x); y=Re(Lb); L(x,y)
//printf("%6.3f %6.3f\n",x,y);
}
fprintf(o,".3 W 0 0 0 RGB S\n");

//imaginary
for(n=58;n>0;n--) {x=1./M_E+0.002*n*n/(1+.04*n);  Lb=lob(x);
y=Im(Lb);
//	printf("%2d \n",n);
if(n/2*2==n) M(x,y) else L(x,y) }

for(n=2;n<58;n+=1) {x=1./M_E+0.002*n*n/(1+.04*n);  Lb=lob(x);
y=-Im(Lb);  if(n/2*2==n) M(x,y) else L(x,y) }

for(n=0;n<10;n+=2){     x=.1/M_E*n;     M(x,0)
x=.1/M_E*(n+1); L(x,0)}
fprintf(o,".5 W S\n");

//GREEN, incremnt
for(n=0;n<220;n+=10) {x=1./M_E+0.01*n;  Lb=lob(x);
q=log(x*Lb);
y=Re(q);
if(n==0)  M(x,y) else L(x,y)    }
fprintf(o,"1.1 W 0 .9 0 RGB S\n");

for(n=0;n<220;n+=2) {x=1./M_E+.01+0.01*n;  Lb=lob(x);
q=log(x*Lb);
y=Im(q);
if(n/4*4 == n)  M(x,y) else L(x,y)      }
fprintf(o,"0 setlinecap S\n");

//PINK, period
fprintf(o,"0 0 0 RGB\n");
for(n=12;n<82;n++) {x=1./M_E+0.005*n+.00025*n*n;  Lb=lob(x);
q=2*M_PI*I/log(x*Lb); y=Re(q); o(x,y)	}

fprintf(o,"1 0 1 RGB\n");
for(n=0;n<220;n+=3) {x=1./M_E+.011+0.01*n;  Lb=lob(x);
q=2*M_PI*I/log(x*Lb);        y=Im(q); o(x,y) }

fprintf(o,"showpage\n");
fprintf(o,"%cTrailer\n",'%');
fclose(o);

}