File:Arknemmap11.jpg

Complex map of function ArkNem, which is inverse function of the Nemtsov function Nem. Values of parameters: $p\!=\!1$, $q\!=\!1$.

$x\!+\!\mathrm i y = \mathrm{ArkNem}_{1,1}(x\!+\mathrm i y)$

The branch points are marked with additional grid lines.

The cut lines are drawn with yellow.

The Nemtsov function is 4th order polynomial of special king:

$\mathrm{Nem}_{p,q}(z)=z+pz^3+qz^4$

For this function, none of the algorithms of construction of superfuncitons reported in the preliminary version of book Superfunctions can be applied "as is", even the algorithm for the superfunction of sin .

For this reason, this function needs the special name to handle.

Description
Roots of the four–order polynomial can be expressed through elementary function, as some combination of the square roots and cubic roots. However, the careful handling of the cut lines is required to avoid confusions with the non–physical solutions.

The preliminary version of this function is called ArcNem; it has all the cut lines horizontal. It happened to be not so good for evaluation of AuNem, which is Abelfunction of the Nemtsov function $\mathrm{Nem}(z)=z+pz^3+qz^4$

C++ generator of the map
//using namespace std; typedef std::complex z_type;
 * 1) include 
 * 2) include 
 * 3) include 
 * 4) define DB double
 * 5) define DO(x,y) for(x=0;x<y;x++)
 * 1) include
 * 1) define Re(x) x.real
 * 2) define Im(x) x.imag
 * 3) define I z_type(0.,1.)
 * 4) include "conto.cin"

// global varaibles DB NEMTSOVp=1.; //will be changed by nemsingu DB NEMTSOVq=1.; //will be changed by nemsingu DB NEMTSOVR; // Re(s) such that nemtsov'(s)=0 DB NEMTSOVI; // Im(s) such that nemtsov'(s)=0 DB NEMTSOVr; // should be assigned by memsingu DB NEMTSOVi; // should be assigned by memsingu

z_type nempq(z_type z){ return z*(1.+z*z*(NEMTSOVp+z*NEMTSOVq)); } z_type nempq1(z_type z){ return 1.+z*z*(3.*NEMTSOVp+z*(4*NEMTSOVq)); }

z_type arcnem0pq(z_type z){ z_type p=NEMTSOVp; // WARNING: global variable z_type q=NEMTSOVq; // WARNING: global variable z_type P=p+4.*q*z; z_type PP=P*P; z_type PPP=PP*P; z_type Q=q-p*p*z; z_type QQ=Q*Q; z_type r=729.*QQ + 108.*PPP; z_type R=sqrt(r); //z_type R=-I*sqrt(-r); z_type s3=27.*q - 27.*p*p*z + R; z_type s=pow(s3,1./3.); z_type B0=pow(2.,1./3.)*P/(q*s); z_type B1=pow(54.,-1./3.)*s/q ; z_type B=B1-B0; z_type c=0.25*p*p/(q*q)+B; z_type C=sqrt(c); // z_type C=I*sqrt(-c); return -.25*p/q - .5*C + .5*sqrt( 0.5*p*p/(q*q) - B + (.25*p*p*p+2.*q*q)/(q*q*q*C) ) ; }

z_type arcnemRpq(z_type z){ //#include"arcnem2.txt" z_type p=NEMTSOVp; // WARNING: global variable. z_type q=NEMTSOVq; // WARNING: global variable. z_type P=p+4.*q*z; z_type PP=P*P; z_type PPP=PP*P; z_type Q=q-p*p*z; z_type QQ=Q*Q; z_type r=729.*QQ + 108.*PPP; //z_type R=sqrt(r); z_type R=I*sqrt(-r); z_type s3=27.*q - 27.*p*p*z + R; z_type s=pow(s3,1./3.); z_type B0=pow(2.,1./3.)*P/(q*s); z_type B1=pow(54.,-1./3.)*s/q ; z_type B=B1-B0; z_type c=0.25*p*p/(q*q)+B; z_type C=sqrt(c); //z_type C=I*sqrt(-c); return -.25*p/q - .5*C + .5*sqrt( 0.5*p*p/(q*q) - B + (.25*p*p*p+2.*q*q)/(q*q*q*C) ) ; }

z_type nemsingu(z_type p,z_type q){ z_type a=sqrt(pow(p,3) + 4.*pow(q,2)); z_type s= z_type(1.,-sqrt(3.)) * ( p + pow(-pow(p,3)+4.*(a-2.*q)*q,1./3.) ) / ( 8.*q*pow( -pow(p,3) + 4.*(a-2.*q)*q ,1./3.) ) ; NEMTSOVp=Re(p); // WARNING: NEMTSOVp is global variable. NEMTSOVq=Re(q); // WARNING: NEMTSOVq is global variable. z_type t=nempq(s); // mempq does not use NEMTSOVi. NEMTSOVR=Re(s); // WARNING: NEMTSOVR is global variable. NEMTSOVI=Im(s); // WARNING: NEMTSOVI is global variable. NEMTSOVr=Re(t); // WARNING: NEMTSOVr is global variable. NEMTSOVi=Im(t); // WARNING: NEMTSOVi is global variable. return s;      // Warning: tested only for real p,q. }
 * ( -p + pow(pow(p,3) - 4.*a*q + 8.*pow(q,2),1./3.) )

z_type arknempq(z_type z){ DB x=Re(z); DB y=Im(z); if(x>NEMTSOVr){ if(y> NEMTSOVi) return arcnemRpq(z); if(y<-NEMTSOVi) return conj(arcnemRpq(conj(z))); } // if(x*x+y*y<.25*(NEMTSOVr*NEMTSOVr+NEMTSOVi*NEMTSOVi)) return arcnemo(z); return arcnem0pq(z);}

z_type arknem(z_type z){z_type s,t,u; s=arknempq(z); // singe Newton iterate t=z-nempq(s); u=nempq1(s); if(abs(t)>1.e-20 && abs(u)>.001 ) s+=t/u; return s;}

//#include "arknem.cin"

int main{ int Max; int j,k,m,n; DB x,y, p,q,P,Q, t, sr,si,tr,ti; z_type z,c,d,s; P=1.; // WARNING: here p,q are already in use in two different meanings for graphics. Q=1.; // WARNING: in this routine, the capital letters are used to denote coefficents s=nemsingu(P,Q); //WARNING: it assign valies to global variables DB NEMTSOV@ tr=NEMTSOVr; ti=NEMTSOVi; printf("P,Q  : %6.2lf  RI: %6.2lf %20.16lf %20.16lf\n",       P,       Q,NEMTSOVR,NEMTSOVI); printf("GLOBAL: %6.2lf ri: %6.2lf %20.16lf %20.16lf\n",NEMTSOVp,NEMTSOVq,NEMTSOVr,NEMTSOVi); // arcnemogen(P,Q); DO(n,42) printf("nemins[%2d]= %30.14lf\n",n,ARCNEMo42[n]); int M=801,M1=M+1; int N=401,N1=N+1; DB X[M1],Y[N1], g[M1*N1],f[M1*N1], w[M1*N1]; // w is working array. char v[M1*N1]; // v is working array FILE *o;o=fopen("arknemmap1010.eps","w");ado(o,402,402); fprintf(o,"201 201 translate\n 100 100 scale\n"); DO(m,M1) X[m]=-2.+.005*(m-.5); DO(n,N1) Y[n]=-2.+.01*(n-.5); for(m=-2;m<3;m++){ M(m,-2)L(m,2)} for(n=-2;n<3;n++){ M(-2,n)L(2,n)} fprintf(o,".003 W 0 0 0 RGB 2 setlinecap S\n"); M(tr, -2) L(tr, 2) M(-2, ti) L(2, ti) M(-2,-ti) L(2,-ti) fprintf(o,".001 W 0 0 0 RGB S\n"); DO(m,M1)DO(n,N1){g[m*N1+n]=9999; f[m*N1+n]=9999;} DO(m,M1){x=X[m]; printf("run at x=%6.3f\n",x); DO(n,N1){y=Y[n]; z=z_type(x,y); c=arknem(z); //c=nempq(c); //d=z; //p=abs(c-d)/(abs(c)+abs(d)); p=-log(p)/log(10.); if(p>-85 && p<85) g[m*N1+n]=p; p=Re(c); q=Im(c); if(p>-40 && p<40 &&       q >-40 && q<40 ) { g[m*N1+n]=p; f[m*N1+n]=q; } }} fprintf(o,"1 setlinejoin 1 setlinecap\n"); //#include"plofu.cin" p=.1;q=.1; for(m=-9;m<9;m++)for(n=1;n<10;n+=1)conto(o,f,w,v,X,Y,M,N, (m+.1*n),-q,q); fprintf(o,".003 W 0 .6 0 RGB S\n"); for(m=0;m<19;m++) for(n=1;n<10;n+=1)conto(o,g,w,v,X,Y,M,N,-(m+.1*n),-q,q); fprintf(o,".003 W .9 0 0 RGB S\n"); for(m=0;m<19;m++) for(n=1;n<10;n+=1)conto(o,g,w,v,X,Y,M,N, (m+.1*n),-q,q); fprintf(o,".003 W 0 0 .9 RGB S\n"); for(m= 1;m<20;m++) conto(o,f,w,v,X,Y,M,N,(0.-m),-p,p);fprintf(o,".008 W .8 0 0 RGB S\n"); for(m= 1;m<20;m++) conto(o,f,w,v,X,Y,M,N,(0.+m),-p,p);fprintf(o,".008 W 0 0 .8 RGB S\n"); conto(o,f,w,v,X,Y,M,N,(0. ),-p,p);fprintf(o,".008 W .5 0 .5 RGB S\n"); for(m=-21;m<22;m++)conto(o,g,w,v,X,Y,M,N,(0.+m),-p,p);fprintf(o,".008 W 0 0 0 RGB S\n");

/* p=2; // Why does not it draw the circle "16" ? conto(o,g,w,v,X,Y,M,N,16.,-4,4);fprintf(o,".002 W .3 0 .3 RGB S\n"); conto(o,g,w,v,X,Y,M,N,15.,-p,p);fprintf(o,".004 W 0 0 1 RGB S\n"); conto(o,g,w,v,X,Y,M,N,14.,-p,p);fprintf(o,".002 W 0 1 0 RGB S\n"); conto(o,g,w,v,X,Y,M,N,13.,-p,p);fprintf(o,".002 W 1 0 0 RGB S\n"); conto(o,g,w,v,X,Y,M,N,12.,-p,p);fprintf(o,".004 W 0 0 .6 RGB S\n"); conto(o,g,w,v,X,Y,M,N,11.,-p,p);fprintf(o,".002 W 0 0 0 RGB S\n"); conto(o,g,w,v,X,Y,M,N,10.,-p,p);fprintf(o,".002 W 0 0 0 RGB S\n"); conto(o,g,w,v,X,Y,M,N,9.,-p,p);fprintf(o,".004 W 0 .6 .6 RGB S\n"); conto(o,g,w,v,X,Y,M,N,8.,-p,p);fprintf(o,".002 W 0 0 0 RGB S\n"); conto(o,g,w,v,X,Y,M,N,7.,-p,p);fprintf(o,".002 W 0 0 0 RGB S\n"); conto(o,g,w,v,X,Y,M,N,6.,-p,p);fprintf(o,".004 W 0 .7 0 RGB S\n"); conto(o,g,w,v,X,Y,M,N,5.,-p,p);fprintf(o,".002 W 0 0 0 RGB S\n"); conto(o,g,w,v,X,Y,M,N,4.,-p,p);fprintf(o,".002 W 0 0 0 RGB S\n"); conto(o,g,w,v,X,Y,M,N,3.,-p,p);fprintf(o,".004 W 1 0 0 RGB S\n"); conto(o,g,w,v,X,Y,M,N,2.,-p,p);fprintf(o,".01 W 0 0 0 RGB S\n"); conto(o,g,w,v,X,Y,M,N,1.,-p,p);fprintf(o,".03 W .5 0 0 RGB S\n");

M(NEMTSOVr, NEMTSOVi) L(NEMTSOVr, 2) M(NEMTSOVr,-NEMTSOVi) L(NEMTSOVr,-2) M(-1,0) L(-2,0) fprintf(o,"0 setlinecap 1 1 0 RGB .01 W S\n");

fprintf(o,"showpage\n%cTrailer",'%'); fclose(o); system("epstopdf arknemmap1010.eps"); system(   "open arknemmap1010.pdf"); //mac getchar; system("killall Preview");// mac }

Latex generator of labels
\documentclass[12pt]{article} \usepackage{graphics} \paperwidth 430pt \paperheight 426pt \usepackage{geometry} \usepackage{rotating} \textwidth 1260pt \textheight 1260pt \topmargin -108pt \oddsidemargin -72pt \parindent 0pt \pagestyle{empty} \newcommand \ing {\includegraphics} \newcommand \sx {\scalebox} \newcommand \rot {\begin{rotate}} \newcommand \ero {\end{rotate}} \begin{document} \begin{picture}(424,424) \put(24,20){\ing{arknemmap1010}} %\put(50,40){\ing{sunem10q10ma6a}} %\put(50,40){\ing{sunem10q10ma6s}} \put(11,415){\sx{1.8}{$y$}} \put(10,314){\sx{1.8}{$1$}} \put(10,214){\sx{1.8}{$0$}} \put(-5,114){\sx{1.8}{$-1$}} \put(-5, 14){\sx{1.8}{$-2$}} \put( 5, 1){\sx{1.8}{$-2$}} \put(105, 1){\sx{1.8}{$-1$}} \put(221, 1){\sx{1.8}{$0$}} \put(321, 1){\sx{1.8}{$1$}} \put(418,1){\sx{1.8}{$x$}} \put(32,154){\sx{1.9}{\rot{40} $u\!=\!-1$\ero}} \put(58,116){\sx{1.8}{\rot{57} $u\!=\!-0.9$\ero}} \put(94,100){\sx{1.8}{\rot{70} $u\!=\!-0.8$\ero}} \put(130,100){\sx{1.8}{\rot{80} $u\!=\!-0.7$\ero}} % \put(159,260){\sx{1.8}{\rot{87} $u\!=\!-0.6$\ero}} \put(172,258){\sx{1.8}{\rot{74} $u\!=\!-0.5$\ero}} \put(186,256){\sx{1.8}{\rot{65} $u\!=\!-0.4$\ero}} % \put(211,190){\sx{1.8}{\rot{86} $u\!=\!-0.2$\ero}} \put(250,188){\sx{1.8}{\rot{88} $u\!=\!0.2$\ero}} \put(276,188){\sx{1.8}{\rot{86} $u\!=\!0.4$\ero}} \put(298,188){\sx{1.8}{\rot{86} $u\!=\!0.5$\ero}} \put(324,188){\sx{1.8}{\rot{86} $u\!=\!0.6$\ero}} \put(358,188){\sx{1.8}{\rot{86} $u\!=\!0.7$\ero}} \put(402,188){\sx{1.8}{\rot{86} $u\!=\!0.8$\ero}} % \put(60,398){\sx{1.8}{\rot{3} $v\!=\!0.8$\ero}} \put(60,350){\sx{1.8}{\rot{6} $v\!=\!0.7$\ero}} \put(68,308){\sx{1.8}{\rot{12} $v\!=\!0.6$\ero}} \put(88,280){\sx{1.8}{\rot{18} $v\!=\!0.5$\ero}} % \put(288,364){\sx{1.8}{\rot{56} $v\!=\!0.4$\ero}} \put(324,334){\sx{1.8}{\rot{43} $v\!=\!0.3$\ero}} \put(350,298){\sx{1.8}{\rot{30} $v\!=\!0.2$\ero}} \put(362,258){\sx{1.8}{\rot{15} $v\!=\!0.1$\ero}} \put(350,178){\sx{1.8}{\rot{-16} $v\!=\!-0.1$\ero}} \put(334,140){\sx{1.8}{\rot{-29} $v\!=\!-0.2$\ero}} \put(306,112){\sx{1.8}{\rot{-46} $v\!=\!-0.3$\ero}} \put(272,86){\sx{1.8}{\rot{-60} $v\!=\!-0.4$\ero}} % \put(46,89){\sx{1.8}{\rot{-11} $v\!=\!-0.7$\ero}} \put(44,36){\sx{1.8}{\rot{-2} $v\!=\!-0.8$\ero}}

\put(148,216){\sx{1.8}{\rot{0.} $v\!=\!0$ \ero}} \put(58,217){\sx{1.8}{\rot{0.} \bf cut \ero}} \put(238,280){\sx{1.8}{\rot{90} \bf cut \ero}} \put(238,140){\sx{1.8}{\rot{90} \bf cut \ero}} \end{picture} \end{document}