File:SuExp6termsTestQ2mapT.png
Original file (1,544 × 1,524 pixels, file size: 191 KB, MIME type: image/png)
Testing of compatibility of the primitive implementations of the infinitely growing SuperExponential \(F\) and the corresponding growing AbelExponential \(G\) for base \(b \in (1,\exp(1/\mathrm e))\).
For the first tests, value \(b=\sqrt{2} \) is chosen: for this specific value, the efficient implementations of the superfinctions and the abelfuncitons are aleady loaded, Sqrt2f21e.cin, Sqrt2f21l.cin, Sqrt2f23e.cin, Sqrt2f43e.cin, Sqrt2f45e.cin, Sqrt2f45l.cin.
They are described in book «Superfunctions» [1], 2020.
The map shows agreement \[ a(z)=- \Re\!\left(\lg\left( \frac {F(G(z))-z} {F(G(z))+z} \right) \right) \] in plane \(z=x+\mathrm i y\), where \(F\) and \(G\) are implemented using the asymptotic expansions with 6 terms taken into account.
The picture suggests, that with 6 terms taken into account in the asymptotics of the functions, of order of 13 significant figures can be calculated using the complex double variables. The better precision can be achieved taking into account more terms in the expansions.
C++
/* Routines from ado.cin, filog.cin, Conrec6.cin, Tania.cin should be also loaded.*/
// c++ -std=c++11 SuExp6termsTestQ2map.cc -O2 -o SuExp6termsTestQ2map
// c++ -std=c++11 18.cc -O2 -o 18
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define DB double
#define DO(x,y) for(x=0;x<y;x++)
using namespace std;
#include <complex>
typedef complex<double> z_type;
#define Re(x) (x).real()
#define Im(x) (x).imag()
#define I z_type(0.,1.)
//#include "conto.cin"
#include "ado.cin"
#include "filog.cin"
#include "Conrec6.cin"
// DB B=1.010; // from 10 to 12 digits along the real axis.
// DB B=1.050; // still proivdes 12 digits along the real axis
// DB B=1.10; // still proivdes 12 digits along the real axis
// DB B=1.1046; // still proivdes 12 digits along the real axis
// DB B=1.1048; // still proivdes 12 digits along the real axis
// DB B=1.105; // still proivdes 12 digits along the real axis
// DB B=1.106; // still proivdes 12 digits along the real axis
// DB B=1.108; // still proivdes 12 digits along the real axis
// DB B=1.11; // still proivdes 12 digits along the real axis
// DB B=1.12; // still proivdes 12 digits along the real axis
// DB B=1.13; // still proivdes 12 digits along the real axis
// DB B=1.2; //
// DB B=1.3; //
// DB B=1.4; //
// DB B=1.42; // almpst the same
DB B=sqrt(2.); // 1.4142135623730951 13 digits for Re(z)>1)
// DB B=1.413 ; // still proivdes 12 digits along the real axis
// DB B=1.414 ; // still proivdes 12 digits along the real axis
// DB B=1.44 ; // 11 digits for Re(z) > 4 ; loss of preciion
// DB B=1.44444 ; // still makes the comlex map
// Warning: B shoud be less than exp(1/e) \approx 1.4446678610
DB S=log(B); // Warning: many GLOBAL VARIABLES
DB Q=Re(Filog(S-I*1.e-14)); // in Book, it is fixed point L
#define T(z) (exp(S*z))
#define Tm(z) (log(z)/S)
DB T0=T(Q); //Do not confuse T0 with function T; it is just test.
DB T1=S*T0; // T'(Q)
DB T2=S*T1; // T''(Q)
DB T3=S*T2; // T'''(Q)
DB T4=S*T3; // T''''(Q)
DB T5=S*T4; // T'''''(Q)
DB T6=S*T5; // T''''''(Q)
DB K=log(T1); // in Book, k by formula (6.9) // but here, the Global variables are UPPERCASE.
//DB Xmin=-8./K; // for 4 coefficienta, estimate: log(10^-15)/5/K; exp(5Kx) should be ~ 10^-15
//DB Xmin=-6./K; // empiric for 6 coeddicients.
//DB Xmin=-5./K; // empiric for 6 coeddicients.
DB Xmin=-4.5/K; // empiric for 6 coeddicients.
DB iP=2*M_PI/K; // in Book, (9.7), imahinary period.
//z_type e=exp(K*z) //in in Book, it is \varepsiolon by (6.3) .. oops.. I cannot assign it here, I do not know z.
DB A0=Q;
DB A1=1.;
DB A2=.5*T2/(T1*(T1-1.));
DB A3=(T2*A2+T3/6.)/((T1*T1-1.)*T1);
DB A4 = ( T2*(A3+A2*A2/2.) + T3*A2/2. + T4/24. ) / ((T1*T1*T1-1.)*T1);
DB A5 = ( T2*(A4+A2*A3)+ T3*(A3+A2*A2)/2. + T4*A2/6. + T5/120.) / ((T1*T1*T1*T1-1.)*T1);
//DB A6 = ( T2*(A5+A2*A4+A3*A3/2.)+ T3*(A4+2.*A2*A3)/2. + T4*(A3+A2*A2)/6. + T5*A2/24.+T6/720.) / ((T1*T1*T1*T1*T1-1.)*T1);
DB A6 = ( T2*(A5+A2*A4+A3*A3/2.)+ T3*(A4+2.*A2*A3+A2*A2*A2/3.)/2. + T4*(A3/4+A2*A2/6) + T5*A2/24.+T6/720.) / ((T1*T1*T1*T1*T1-1.)*T1);
DB U0=Q;
DB U1=1.;
DB U2=-A2;
DB U3=2.*A2*A2-A3;;
DB U4=5.*A2*A3-A4-5.*A2*A2*A2;
DB U5=6.*A2*A4+3.*A3*A3+14*A2*A2*A2*A2-A1*A1*A1*A5-21.*A2*A2*A3;
DB U6=7.*A2*A5+7.*A3*A4+84*A2*A2*A2*A3-A6-28.*A2*A3*A3-42.*A2*A2*A2*A2*A2-28.*A2*A2*A4;
z_type F0(z_type z){ z_type e=exp(K*z);
return Q+e*(1.+e*(A2+e*(A3+e*(A4+e*(A5+e*A6)))));
}
z_type Fn(z_type z){ z_type c; DB x=Re(z); int n,N;
N=int(x-Xmin);
if(N<1) return F0(z);
c= F0(z-double(N));
for(n=0;n<N;n++) c=exp(S*c);
return c;
}
z_type G0(z_type z){
z_type v=z-Q;
z_type c = v*(1.+v*(U2+v*(U3+v*(U4+v*(U5+v*U6)))));
return log(c)/K;
}
z_type Gn(z_type z) // WARNING! Q is global; Tm is also just defined above..
{ int n;
for(n=0;n<31;n++)
{
// if(abs(z-Q)<2.e-3) return G0(z)+(0.+n);
// if(abs(z-Q)<.005) return G0(z)+(0.+n);
if(abs(z-Q)<.012) return G0(z)+(0.+n);
z=Tm(z);
}
return G0(z)+(0.+n);
}
DB Xzero=Re(Gn(Q+1.));
z_type G(z_type z) {return Gn(z)-Xzero; }
z_type F(z_type z) {return Fn(z+Xzero); }
int main(){ int j,k,m,n; DB x,y, p,q, t; z_type z,c,d;
printf("B, S, Q : %18.16lf %18.16lf %19.16lf\n",B,S,Q);
printf("T0,T1,K,IP: %18.16lf %18.16lf %19.16lf %19.16lf\n",T0,T1,K,iP);
printf("T2,A2,U2 : %18.16lf %18.16lf %19.16lf\n",T2,A2,U2);
printf("T3,A3,U3 : %18.16lf %18.16lf %19.16lf\n",T3,A3,U3);
printf("T4,A4,U4 : %18.16lf %18.16lf %19.16lf\n",T4,A4,U4);
printf("T5,A5,U5 : %18.16lf %18.16lf %19.16lf\n",T5,A5,U5);
printf("T6,A6,U6 : %18.16lf %18.16lf %19.16lf\n",T6,A6,U6);
// getchar();
int M=501,M1=M+1;
int N=751,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("SuExp6termsTestQ2map.eps","w");ado(o,1524,1520);
//FILE *o;o=fopen("SuExp4termsTestQ2map.eps","w");ado(o,1524,1520);
#define M(x,y)fprintf(o,"%9.6lf %9.6f M\n",0.+x, 0.+y);
#define L(x,y)fprintf(o,"%9.6lf %9.6f L\n",0.+x, 0.+y);
fprintf(o,"510 510 translate\n 100 100 scale 2 setlinecap 1 setlinejoin\n");
DO(m,M1) X[m]=-5.+.03*(m-.5);
DO(n,250)Y[n]=-5.+.02*(n-.1);
Y[250]=-.00001;
Y[251]= .00001;
for(n=252;n<N1;n++) Y[n]=-5.+.02*(n-1.);
DO(m,M1)DO(n,N1){g[m+M1*n]=9999; f[m+M1*n]=9999;}
DO(m,M1){x=X[m]; //printf("%5.2f\n",x);
DO(n,N1){y=Y[n]; z=z_type(x,y);
// c=Tania(z_type(-1.,-M_PI)+log(z))/(-z);
//c=Filog(z);
//c=exp(z);
//c=F(z);
//c=T(F(z-1.));
//c=Fn(z);
c=G(z);
//c=F(z);
//c=Gn(z);
c=F(c);
c=-log10((z-c)/(z+c));
p=Re(c);q=Im(c);
if(p>-201. && p<201. && q>-201. && q<201. ){ g[m+M1*n]=p;f[m+M1*n]=q;}
}}
fprintf(o,"1 setlinejoin 1 setlinecap\n"); p=5.;q=1;
/*
for(m=-10;m<10;m++)for(n=2;n<10;n+=2)Conrec6(o,f,X,Y,M1,N1,(m+.1*n), q); fprintf(o,".008 W 0 .6 0 RGB S\n");
for(m=0;m<10;m++) for(n=2;n<10;n+=2)Conrec6(o,g,X,Y,M1,N1,-(m+.1*n), q); fprintf(o,".008 W .9 0 0 RGB S\n");
for(m=0;m<10;m++) for(n=2;n<10;n+=2)Conrec6(o,g,X,Y,M1,N1, (m+.1*n), q); fprintf(o,".008 W 0 0 .9 RGB S\n");
for(m=1;m<21;m++) Conrec6(o,f,X,Y,M1,N1, (0.-m),p); fprintf(o,".02 W .9 0 0 RGB S\n");
for(m=1;m<21;m++) Conrec6(o,f,X,Y,M1,N1, (0.+m),p); fprintf(o,".02 W 0 0 .9 RGB S\n");
Conrec6(o,f,X,Y,M1,N1, (0. ),p); fprintf(o,".02 W .6 0 .6 RGB S\n");
for(m=-20;m<21;m++) Conrec6(o,g,X,Y,M1,N1, (0.+m),p); fprintf(o,".02 W 0 0 0 RGB S\n");
p=2;
Conrec6(o,g,X,Y,M1,N1, 30 ,p); fprintf(o,".02 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 40 ,p); fprintf(o,".02 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 50 ,p); fprintf(o,".02 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1,-30 ,p); fprintf(o,".02 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1,-40 ,p); fprintf(o,".02 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1,-50 ,p); fprintf(o,".02 W 0 0 0 RGB S\n");
Conrec6(o,f,X,Y,M1,N1,-30 ,p); fprintf(o,".02 W .9 0 0 RGB S\n");
Conrec6(o,f,X,Y,M1,N1,-40 ,p); fprintf(o,".02 W .9 0 0 RGB S\n");
Conrec6(o,f,X,Y,M1,N1,-50 ,p); fprintf(o,".02 W .9 0 0 RGB S\n");
Conrec6(o,f,X,Y,M1,N1, 30 ,p); fprintf(o,".02 W 0 0 .9 RGB S\n");
Conrec6(o,f,X,Y,M1,N1, 40 ,p); fprintf(o,".02 W 0 0 .9 RGB S\n");
Conrec6(o,f,X,Y,M1,N1, 50 ,p); fprintf(o,".02 W 0 0 .9 RGB S\n");
*/
p=1;
Conrec6(o,g,X,Y,M1,N1, 1 ,p); fprintf(o,".1 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 2 ,p); fprintf(o,".02 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 3 ,p); fprintf(o,".1 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 4 ,p); fprintf(o,".02 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 5 ,p); fprintf(o,".02 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 6 ,p); fprintf(o,".1 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 7 ,p); fprintf(o,".02 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 8 ,p); fprintf(o,".04 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 9 ,p); fprintf(o,".04 W 0 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 10 ,p); fprintf(o,".06 W 1 0 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 11 ,p); fprintf(o,".06 W .6 .6 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 12 ,p); fprintf(o,".06 W 0 1 0 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 13 ,p); fprintf(o,".06 W 0 1 1 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 14 ,p); fprintf(o,".02 W 0 0 1 RGB S\n");
Conrec6(o,g,X,Y,M1,N1, 15 ,p); fprintf(o,".03 W 1 0 1 RGB S\n");
for(m=-5;m<11;m++){M(m,-5)L(m,10)}
for(n=-5;n<11;n++){M( -5,n)L(10,n)}
fprintf(o,".01 W 0 0 0 RGB S\n");
M(-5.06,0) L(5.06,0)
M(0,-5.06) L(0,10.06) fprintf(o,".03 W 0 0 0 RGB S\n");
fprintf(o,"showpage\n%c%cTrailer",'%','%'); fclose(o);
system("epstopdf SuExp6termsTestQ2map.eps");
system( "open SuExp6termsTestQ2map.pdf"); //for mac
}
Output
At the run, the code above produce the following output:
B, S, Q : 1.4142135623730951 0.3465735902799727 3.9999999999999987 T0,T1,K,IP: 3.9999999999999991 1.3862943611198906 0.3266342599782809 19.2361490420428574 T2,A2,U2 : 0.4804530139182014 0.4485874311952613 -0.4485874311952613 T3,A3,U3 : 0.1665123259944648 0.1903722467978068 0.2120891200549198 T4,A4,U4 : 0.0577087746457709 0.0778295765369683 -0.1021843675069717 T5,A5,U5 : 0.0200003372196427 0.0309358603057080 0.0496986830373718
It helps to reveal the mistakes if any.
Latex
\documentclass[12pt]{article}
\paperwidth 1550pt
\paperheight 1530pt
\usepackage{graphicx}
\usepackage{rotating}
\topmargin -100pt
\textheight 2750pt
\oddsidemargin -80pt
\textwidth 2512pt
\newcommand{\ing}{\includegraphics}
\newcommand{\sx}{\scalebox}
\newcommand{\rot}{\begin{rotate}}
\newcommand{\ero}{\end{rotate}}
\parindent 0px
\begin{document}
\sx{1}{\begin{picture}(1540,1540)
%\put(20,20){\ing{SuExp4termsTestQ2map}}
\put(20,20){\ing{SuExp6termsTestQ2map}}
\put(480,1494){\sx{8}{\(y\)}}
\put(480,1400){\sx{7}{\(9\)}}
\put(480,1308){\sx{7}{\(8\)}}
\put(480,1208){\sx{7}{\(7\)}}
\put(480,1108){\sx{7}{\(6\)}}
\put(480,1008){\sx{7}{\(5\)}}
\put(480, 908){\sx{7}{\(4\)}}
\put(480, 808){\sx{7}{\(3\)}}
\put(480,708){\sx{7}{\(2\)}}
\put(480,608){\sx{7}{\(1\)}}
\put(480,508){\sx{7}{\(0\)}}
\put(400,408){\sx{7}{\(-1\)}}
\put(400,302){\sx{7}{\(-2\)}}
\put(400,202){\sx{7}{\(-3\)}}
\put(400,102){\sx{7}{\(-4\)}}
\put( 50,460){\sx{7}{\(-4\)}}
\put(250,460){\sx{7}{\(-2\)}}
%\put(360,470){\sx{8}{\(-1\)}}
\put(610,460){\sx{7}{\(1\)}}
\put(710,460){\sx{7}{\(2\)}}
\put(810,460){\sx{7}{\(3\)}}
\put(910,460){\sx{7}{\(4\)}}
\put(1010,460){\sx{7}{\(5\)}}
\put(1110,460){\sx{7}{\(6\)}}
\put(1210,460){\sx{7}{\(7\)}}
\put(1310,460){\sx{7}{\(8\)}}
\put(1410,460){\sx{7}{\(9\)}}
\put(1480,464){\sx{8}{\(x\)}}
\put(544,970){\sx{5}{\(\!a=\!13\)}}
\put(760,600){\sx{6}{\(\!a=\!14\)}}
\put(334,516){\sx{5}{\(a\!=\!12\)}}
\put(770,519){\sx{5}{\(\!a=\!15\)}}
\end{picture}}
References
- ↑ https://misugadro.mydns.jp/BOOK/468.pdf D.Kouznetsov. Superfunctions. Lambert Academic Publishing, 2020.
Keywords
[[]] «AbelExponential», «Abel function», «Abelfunction», «Agreement», «Base sqrt2», «Exponential», «PowerSeriesInversion», «SuperExponential», «Superfunction», «Superfunctions»,
File history
Click on a date/time to view the file as it appeared at that time.
| Date/Time | Thumbnail | Dimensions | User | Comment | |
|---|---|---|---|---|---|
| current | 09:38, 11 February 2026 | 1,544 × 1,524 (191 KB) | T (talk | contribs) | Corrected misprints in the code of the main routine. Reduced number of iterates. Reduced font-size of the labels. | |
| 04:09, 10 February 2026 | 1,544 × 1,524 (258 KB) | T (talk | contribs) | {{oq|SuExp6termsTestQ2mapT.png|Original file (1,544 × 1,524 pixels, file size: 258 KB, MIME type: image/png)|400}} Testing of compatibility of the implementations of the infinitely growing SuperExponential \(F\) and the corresponding growing AbelExponential \(G\) for base \(b \in (1,\exp(1/\mathrm e))\). For the first tests, value \(b=\sqrt{2} \) is chosen: for this specific value, the efficient implementations of the superfinctions and the abelfuncitons are aleady loaded, [[Sqrt2... |
You cannot overwrite this file.
File usage
There are no pages that use this file.