File:Acker2t400.jpg

Comparison of the two notations for the Ackermann functions to base 2.

Thin curves: $y=\mathcal A(m,x)=A_{2,m}(x\!+\!3)-3 ~$ for $m=1,2,3,4$

Thick curves: $y=\mathcal A(m,x\!-\!3)+3=A_{2,m}(x) ~ $ for $m=1,2,3,4$

$A_{2,1}=2+x=\mathcal A(1,x\!+\!3)-3=\mathcal A(1,x)$

$A_{2,2}=2x=\mathcal A(2,x\!+\!3)-3$

$A_{2,3}=\exp_2(x)=\mathcal A(3,x\!+\!3)-3=2^x$

$A_{2,4}=\mathrm{tet}_2(x)=\mathcal A(3,x\!+\!3)-3$

C++ generator of curves
typedef std::complex z_type; // #include "ado.cin" void ado(FILE *O, int X, int Y) { fprintf(O,"%c!PS-Adobe-2.0 EPSF-2.0\n",'%'); 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 {.015 0 360 arc C F} bind def\n"); fprintf(O,"/times-Roman findfont 20 scalefont setfont\n"); fprintf(O,"/W {setlinewidth} bind def\n"); fprintf(O,"/RGB {setrgbcolor} bind def\n");} /* end of routine */
 * 1) include 
 * 2) include 
 * 3) include 
 * 4) define DB double
 * 5) define DO(x,y) for(x=0;x<y;x++)
 * 6) include
 * 1) define Re(x) x.real
 * 2) define Im(x) x.imag
 * 3) define I z_type(0.,1.)

// #include "fsexp.cin" // #include "fslog.cin"
 * 1) include "fit1.cin"

int main{ int j,k,m,n; DB x,y, p,q, t; z_type z,c,d, cu,cd; FILE *o;o=fopen("acker2.eps","w"); ado(o,608,1008); fprintf(o,"304 304 translate\n 100 100 scale\n"); for(m=-3;m<4;m++) {M(m,-3)L(m,7)} for(n=-3;n<8;n++) {M( -3,n)L(3,n)} fprintf(o,"2 setlinecap 1 setlinejoin .004 W 0 0 0 RGB S\n");
 * 1) define M(x,y) fprintf(o,"%8.4f %8.4f M\n",0.+x,0.+y);
 * 2) define L(x,y) fprintf(o,"%8.4f %8.4f L\n",0.+x,0.+y);
 * 3) define o(x,y) fprintf(o,"%8.4f %8.4f o\n",0.+x,0.+y);

M(-3.02,-3.02+2.)L(3.02,3.02+2) fprintf(o,".02 W .3 0 .3 RGB S\n"); M(-1.51, -1.51*2)L(3.02,3.02*2) fprintf(o,".02 W 0 .5 0 RGB S\n"); fprintf(o,"1 0 0 RGB\n");

DO(n,306){x=-3.02+.025*(n-.5);y=exp(log(2.)*x); o(x,y); if(y>7.1)break;} fprintf(o,".03 W 0 .8 0 RGB S\n");

//DO(n,150){x=-1.9+.04*n;y=Re(FSEXP(x)); if(n==0) M(x,y)else L(x,y); if(y>8.)break;} fprintf(o,".02 W 0 0 1 RGB S\n"); //DO(n,202){y=-3+.05*(n-.6);x=Re(FSLOG(y)); //if(n/2*2==n) M(x,y)else L(x,y); if(y>6.)break;} fprintf(o,"0 setlinecap .016 W 0 0 1 RGB S\n");

DO(n,330){x=-1.9+.018*n; y=Re(FIT1(log(2.),x)); if(n/2*2==n) M(x,y)else L(x,y); if(y>7.1)break;} fprintf(o,"0 setlinecap .03 W 0 0 .7 RGB S\n");

//DO(n,150){x=-3.03+.04*n;y=Re(pen7(x)); if(n==0) M(x,y)else L(x,y); if(y>6.)break;} fprintf(o,".01 W 0 0 0 RGB S\n"); //DO(n,150){x=-3.03+.04*n;y=Re(pen7(x)); if(n==0) M(x,y)else L(x,y); if(y>6.)break;} fprintf(o,".01 W 0 0 0 RGB S\n");

//thin

//M(-3.02,-3.02+2.)L(3.02,3.02+2) fprintf(o,".007 W .3 0 .3 RGB S\n"); M(-1.51-3, -1.51*2-3)L(5.02-3,5.02*2-3) fprintf(o,".005 W 0 .5 0 RGB S\n"); fprintf(o,"1 0 0 RGB\n");

DO(n,306){x=-1.02+.025*(n-.5);y=exp(log(2.)*x); o(x-3,y-3); if(y-3>7.1)break;} fprintf(o,".05 W 0 .8 0 RGB S\n");

//DO(n,150){x=-1.9+.04*n;y=Re(FSEXP(x)); if(n==0) M(x-3,y-3)else L(x-3,y-3); if(y-3>8.)break;} fprintf(o,".02 W 0 0 1 RGB S\n"); //DO(n,202){y=-3+.05*(n-.6);x=Re(FSLOG(y)); //if(n/2*2==n) M(x,y)else L(x,y); if(y>6.)break;} fprintf(o,"0 setlinecap .016 W 0 0 1 RGB S\n");

DO(n,330){x=-.9+.018*n; y=Re(FIT1(log(2.),x)); if(n/2*2==n) M(x-3,y-3)else L(x-3,y-3); if(y-3>7.1)break;} fprintf(o,"0 setlinecap .018 W 0 0 .7 RGB S\n");

fprintf(o,"showpage\n%c%cTrailer",'%','%'); fclose(o); system("epstopdf acker2.eps"); system(   "open acker2.pdf"); }

Latex generator of labels
\documentclass[12pt]{article} \paperwidth 640px \paperheight 1006px \textwidth 1394px \textheight 1300px \topmargin -104px \oddsidemargin -92px \usepackage{graphics} \usepackage{rotating} \newcommand \sx {\scalebox} \newcommand \rot {\begin{rotate}} \newcommand \ero {\end{rotate}} \newcommand \ing {\includegraphics} \newcommand \rmi {\mathrm{i}} \begin{document} {\begin{picture}(608,1006) %\put(12,0){\ing{penma}} \put(0,0){\ing{acker2}} \put(281,988){\sx{3.}{$y$}} \put(279,895){\sx{3.}{$6$}} \put(279,795){\sx{3.}{$5$}} \put(279,694){\sx{3.}{$4$}} \put(279,594){\sx{3.}{$3$}} \put(279,468){\sx{3.}{$\mathrm e$}} \put(279,494){\sx{3.}{$2$}} \put(279,394){\sx{3.}{$1$}} \put(279,294){\sx{3.}{$0$}} \put(258,193){\sx{3.}{$-1$}} \put(258, 93){\sx{3.}{$-2$}} \put( 80,274){\sx{3.}{$-2$}} \put(180,274){\sx{3.}{$-1$}} \put(296,274){\sx{3.}{$0$}} \put(396,274){\sx{3.}{$1$}} \put(496,274){\sx{3.}{$2$}} \put(586,274){\sx{3.}{$x$}} % %\put(242,620){\sx{1.8}{\rot{85}$y\!=\!\mathcal{A}(4,x)\!=\! A_2(x\!+\!3)\!-\!3\!=\!\mathrm{tet}_2(x\!+\!3)\!-\!3$\ero}} \put(248,720){\sx{1.8}{\rot{85}$y\!=\!\mathcal{A}(4,x)\!=\! A_{2,4}(x\!+\!3)\!-\!3$\ero}} \put(312,720){\sx{1.8}{\rot{80}$y\!=\!\mathcal{A}(3,x)\!=\! A_{2,3}(x\!+\!3)\!-\!3$\ero}} \put(348,712){\sx{1.8}{\rot{63}$y\!=\!\mathcal{A}(2,x)\!=\! A_{2,2}(x\!+\!3)\!-\!3$\ero}} \put(314,526){\sx{1.8}{\rot{45}$y\!=\!\mathcal{A}(1,x)\!=\! A_{2,1}(x\!+\!3)\!-\!3$\ero}}

%\put(438,714){\sx{1.8}{\rot{85}$y\!=\!\mathrm{pen}(x)$\ero}} %\put(538,912){\sx{1.8}{\rot{82}$y\!=\!\mathrm{tet}_2(x)$\ero}} \put(526,822){\sx{1.8}{\rot{82}$y\!=\!A_{2,4}(x)\!=\!\mathrm{tet}_2(x)$\ero}} %\put(578,892){\sx{1.8}{\rot{73}$y\!=\!2^x$\ero}} \put(566,858){\sx{1.8}{\rot{73}$y\!=\!A_{2,3}(x)\!=\!2^x$\ero}} \put(566,792){\sx{1.8}{\rot{62}$y\!=\!A_{2,2}(x)\!=\!\mathrm{2}x$\ero}} %\put(478,628){\sx{1.8}{\rot{50}$y\!=\!\mathrm{e}\!+\!x$\ero}} \put(520,696){\sx{1.96}{\rot{44}$y\!=\!A_{2,1}(x)\!=\!2\!+\!x$\ero}} % %\put(86,222){\sx{1.9}{\rot{11}$y\!=\!\mathrm{exp}(x)$\ero}} %\put(20,30){\sx{1.9}{\rot{30}$y\!=\!\mathrm{pen}(x)$\ero}} \put(32,326){\sx{1.9}{\rot{3}$y\!=\!2^x$\ero}} \put(132,4){\sx{1.9}{\rot{81}$y\!=\!\mathrm{tet}_2(x)$\ero}} \put(178,8){\sx{1.9}{\rot{66}$y\!=\!\mathrm{2} x$\ero}} % %\put(308, 13){\sx{2.2}{$y\!=\!L_{\mathrm e,4,0}$}} \end{picture} \end{document}