Difference between revisions of "File:Vladi05.jpg"
(misprints, $ -> \( ; ref) |
|||
| Line 1: | Line 1: | ||
| + | {{oq|Vladi05.jpg|Original file (1,783 × 558 pixels, file size: 342 KB, MIME type: image/jpeg)}} |
||
| − | [[Complex map]] of approximation |
+ | [[Complex map]] of approximation [[maclo]] of the natural [[tetration]], left, and maps of the agreements \(D\). |
| + | Approximation [[maclo]] is used in the [[C++]] implementation [[fsexp.cin]] of [[Natural tetration]] |
||
<b>Left:</b> |
<b>Left:</b> |
||
| − | + | \(u\!+\!\mathrm i v = \mathrm{maclo}(x+\mathrm i y)\) |
|
| − | + | \(\displaystyle |
|
| − | \mathrm{maclo}(z)= \ln(z\!+\!2)+\sum_{n=0}^{N-1} s_n z^n |
+ | \mathrm{maclo}(z)= \ln(z\!+\!2)+\sum_{n=0}^{N-1} s_n z^n\) |
| − | + | \(\mathrm{tet}(z)=\mathrm{maclo}(z)+O(z^N)\) |
|
| − | for |
+ | for \(N=101\). |
<b>Center:</b> |
<b>Center:</b> |
||
| − | + | \(\displaystyle D_1= |
|
D_{1}(z)=-\lg\left( \frac |
D_{1}(z)=-\lg\left( \frac |
||
| − | {|\ln(\mathrm{maclo}(z\!+\!1)-\mathrm{ |
+ | {|\ln(\mathrm{maclo}(z\!+\!1)-\mathrm{maclo}(z)|} |
| − | {|\ln(\mathrm{maclo}(z\!+\!1)|+|\mathrm{ |
+ | {|\ln(\mathrm{maclo}(z\!+\!1)|+|\mathrm{maclo}(z)|} \right) |
| + | \) |
||
| − | $ |
||
<b>Right:</b> |
<b>Right:</b> |
||
| − | + | \(\displaystyle |
|
D_2=D_{2}(z)=-\lg\left( \frac |
D_2=D_{2}(z)=-\lg\left( \frac |
||
{|\exp(\mathrm{maclo}(z\!-\!1)-\mathrm{maclo}(z)|} |
{|\exp(\mathrm{maclo}(z\!-\!1)-\mathrm{maclo}(z)|} |
||
{|\exp(\mathrm{maclo}(z\!-\!1)|+|\mathrm{maclo}(z)|} \right) |
{|\exp(\mathrm{maclo}(z\!-\!1)|+|\mathrm{maclo}(z)|} \right) |
||
| + | \) |
||
| − | $ |
||
| − | For |
+ | For \(D=D_1\) and \(D=D_2\), levels \(D=1,2,4,6,8,10,12,14 ~ ~ \) are drawn. Level \(D=1\) is drawn with thick line. |
Symbol "15" indicates the region, where the agreement is better than 14. |
Symbol "15" indicates the region, where the agreement is better than 14. |
||
| + | ==Use== |
||
| ⚫ | |||
| + | |||
| + | This picture appears as Fig.14.8 at page 195 of book «[[Superfunctions]]», 2020 <ref> |
||
| + | https://www.amazon.co.jp/-/en/Dmitrii-Kouznetsov/dp/6202672862 <br> |
||
| + | https://www.morebooks.de/shop-ui/shop/product/978-620-2-67286-3 <br> |
||
| + | https://mizugadro.mydns.jp/BOOK/468.pdf <br> |
||
| + | Dmitrii Kouznetsov. Superfunctions. [[Lambert Academic Publishing]], 2020. |
||
| + | </ref>. |
||
| + | |||
| ⚫ | |||
<ref> |
<ref> |
||
https://www.morebooks.de/store/ru/book/Суперфункции/isbn/978-3-659-56202-0 <br> |
https://www.morebooks.de/store/ru/book/Суперфункции/isbn/978-3-659-56202-0 <br> |
||
| − | http://www.ils.uec.ac.jp/~dima/BOOK/202.pdf <br> |
+ | <!--http://www.ils.uec.ac.jp/~dima/BOOK/202.pdf <br> !--> |
http://mizugadro.mydns.jp/BOOK/202.pdf |
http://mizugadro.mydns.jp/BOOK/202.pdf |
||
Д.Кузнецов. Суперфункции. [[Lambert Academic Publishing]], 2014. |
Д.Кузнецов. Суперфункции. [[Lambert Academic Publishing]], 2014. |
||
| − | </ref> |
+ | </ref>. |
| − | ; the English version is in preparation in 2015. |
||
First time published in the [[Vladikavkaz Matehmatical Journal]] |
First time published in the [[Vladikavkaz Matehmatical Journal]] |
||
| Line 45: | Line 55: | ||
D.Kouznetsov. Superexponential as special function. Vladikavkaz Mathematical Journal, 2010, v.12, issue 2, p.31-45. |
D.Kouznetsov. Superexponential as special function. Vladikavkaz Mathematical Journal, 2010, v.12, issue 2, p.31-45. |
||
Figure 5. |
Figure 5. |
||
| − | </ref>. |
+ | </ref>, 2010. |
==[[C++]] generator of the first picture== |
==[[C++]] generator of the first picture== |
||
| Line 52: | Line 62: | ||
[[conto.cin]] |
[[conto.cin]] |
||
should be loaded in order to compile the code below |
should be loaded in order to compile the code below |
||
| + | <pre> |
||
| − | <poem><nomathjax><nowiki> |
||
| − | |||
#include <stdio.h> |
#include <stdio.h> |
||
#include <stdlib.h> |
#include <stdlib.h> |
||
| Line 125: | Line 134: | ||
} |
} |
||
| + | </pre> |
||
| − | </nowiki></nomathjax></poem> |
||
==[[C++]] generator of the second picture== |
==[[C++]] generator of the second picture== |
||
| + | <pre> |
||
| − | <poem><nomathjax><nowiki> |
||
#include <stdio.h> |
#include <stdio.h> |
||
#include <stdlib.h> |
#include <stdlib.h> |
||
| Line 194: | Line 203: | ||
} |
} |
||
| + | </pre>> |
||
| − | </nowiki></nomathjax></poem> |
||
==[[C++]] generator of the right picture== |
==[[C++]] generator of the right picture== |
||
| + | <pre> |
||
| − | <poem><nomathjax><nowiki> |
||
#include <stdio.h> |
#include <stdio.h> |
||
#include <stdlib.h> |
#include <stdlib.h> |
||
| Line 261: | Line 270: | ||
} |
} |
||
| + | </pre> |
||
| − | </nowiki></nomathjax></poem> |
||
==[[Latex]] combiner== |
==[[Latex]] combiner== |
||
| + | <pre> |
||
| − | <poem><nomathjax><nowiki> |
||
\documentclass[12pt]{article} |
\documentclass[12pt]{article} |
||
\usepackage{graphicx} |
\usepackage{graphicx} |
||
| Line 323: | Line 332: | ||
\end{document} |
\end{document} |
||
| + | </pre> |
||
| − | </nowiki></nomathjax></poem> |
||
| ⚫ | |||
| + | {{ref}} |
||
| + | {{fer}} |
||
| + | ==Keywords== |
||
| ⚫ | |||
| + | «[[fsexp.cin]]», |
||
| + | «[[Natural tetration]]», |
||
| + | «[[Plodi.cin]]», |
||
| + | «[[Superfunctions]]», |
||
| ⚫ | |||
| + | «[[Суперфункции]]», |
||
| ⚫ | |||
| ⚫ | |||
| + | [[Category:Approximation]] |
||
| − | <references/> |
||
| − | |||
[[Category:Book]] |
[[Category:Book]] |
||
| ⚫ | |||
| ⚫ | |||
[[Category:BookMap]] |
[[Category:BookMap]] |
||
| ⚫ | |||
[[Category:C++]] |
[[Category:C++]] |
||
| + | [[Category:Complex map]] |
||
[[Category:Latex]] |
[[Category:Latex]] |
||
| + | [[Category:Superfunctions]] |
||
| + | [[Category:Tetration]] |
||
Revision as of 20:42, 10 October 2025
Complex map of approximation maclo of the natural tetration, left, and maps of the agreements \(D\). Approximation maclo is used in the C++ implementation fsexp.cin of Natural tetration
Left:
\(u\!+\!\mathrm i v = \mathrm{maclo}(x+\mathrm i y)\)
\(\displaystyle \mathrm{maclo}(z)= \ln(z\!+\!2)+\sum_{n=0}^{N-1} s_n z^n\)
\(\mathrm{tet}(z)=\mathrm{maclo}(z)+O(z^N)\)
for \(N=101\).
Center:
\(\displaystyle D_1= D_{1}(z)=-\lg\left( \frac {|\ln(\mathrm{maclo}(z\!+\!1)-\mathrm{maclo}(z)|} {|\ln(\mathrm{maclo}(z\!+\!1)|+|\mathrm{maclo}(z)|} \right) \)
Right:
\(\displaystyle D_2=D_{2}(z)=-\lg\left( \frac {|\exp(\mathrm{maclo}(z\!-\!1)-\mathrm{maclo}(z)|} {|\exp(\mathrm{maclo}(z\!-\!1)|+|\mathrm{maclo}(z)|} \right) \)
For \(D=D_1\) and \(D=D_2\), levels \(D=1,2,4,6,8,10,12,14 ~ ~ \) are drawn. Level \(D=1\) is drawn with thick line. Symbol "15" indicates the region, where the agreement is better than 14.
Use
This picture appears as Fig.14.8 at page 195 of book «Superfunctions», 2020 [1].
It appears also as figure 14.7 in the Russian version «Суперфункции», 2014 [2].
First time published in the Vladikavkaz Matehmatical Journal [3], 2010.
C++ generator of the first picture
fsexp.cin, ado.cin, conto.cin should be loaded in order to compile the code below
#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 std::complex<double> z_type;
#define Re(x) x.real()
#define Im(x) x.imag()
#define I z_type(0.,1.)
#include "fsexp.cin"
#include "conto.cin"
int main(){ int j,k,m,n; DB x,y, p,q, t; z_type z,c,d, cu,cd;
z_type Zo=z_type(.31813150520476413, 1.3372357014306895);
z_type Zc=z_type(.31813150520476413,-1.3372357014306895);
int M=250,M1=M+1;
int N=301,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("figmaclo.eps","w");ado(o,0,0,62,62);
FILE *o;o=fopen("vladi05a.eps","w");ado(o,62,62);
fprintf(o,"31 31 translate\n 10 10 scale\n");
DO(m,M1) X[m]=-3.+.04*(m-.5);
//DO(n,N1)Y[n]=-6 +.03*(n-.5);
DB sy=2.8/sinh(.005*N);
DO(n,N1) Y[n]=sy*sinh(.01*(n-N/2-.5));
/*
for(m=-20;m<21;m++){ z=z_type(Re(Zo),Im(Zo)*m/20.009); c=FSLOG(z); x=Re(c); y=Im(c); if(m==-20)M(x,y)else L(x,y) }
for(m=20;m>-21;m--){ z=z_type(Re(Zo),Im(Zo)*m/20.009); c=FSLOG(z); x=Re(c)+1;y=Im(c); L(x,y) }
fprintf(o,"1 1 0 RGB F\n");
*/
/*
for(m=-20;m<21;m++){ z=z_type(Re(Zo),Im(Zo)*m/20.008); c=FSLOG(z); x=Re(c);y=Im(c); if(m==-20)M(x,y)else L(x,y) }
for(m=20;m>-21;m--){ z=z_type(Re(Zo),Im(Zo)*m/20.008); c=FSLOG(z); x=Re(c)+1;y=Im(c);if(m==20)M(x,y)else L(x,y) }
fprintf(o,".006 W 0 0 0 RGB S\n");
*/
for(m=-3;m<4;m++) { if(m==0){M(m,-3.2)L(m,3.2)} else {M(m,-3)L(m,3)} }
for(n=-3;n<4;n++) { M( -3,n)L(3,n)}
fprintf(o,".006 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=maclo(z);
p=Re(c); q=Im(c);
if(p>-9 && p<9 && fabs(p)> 1.e-8 && fabs(p-1.)>1.e-8) g[m*N1+n]=p;
if(q>-9 && q<9 && fabs(q)> 1.e-8) f[m*N1+n]=q;
}}
p=1;q=.5;
conto(o,g,w,v,X,Y,M,N, ( Re(Zo) ),-q,q); fprintf(o,".1 W 1 .5 1 RGB S\n");
conto(o,f,w,v,X,Y,M,N, ( Im(Zo) ),-q,q); fprintf(o,".1 W .2 1 .5 RGB S\n");
conto(o,f,w,v,X,Y,M,N, (-Im(Zo) ),-q,q); fprintf(o,".1 W .5 1 .2 RGB S\n");
#include"plofu.cin"
M(-2,0)L(-3.03,0) fprintf(o,".07 W 1 1 1 RGB S\n");
DO(m,6){ M(-2-.25*m,0)L(-2-.25*(m+.5),0)} fprintf(o,".08 W 0 0 0 RGB S\n");
fprintf(o,"showpage\n%c%cTrailer",'%','%'); fclose(o);
system("epstopdf vladi05a.eps");
system( "open vladi05a.pdf");//for macintosh
// system( "xpdf fig05a.pdf");//for linux
//getchar(); system("killall Preview");//for macintosh
}
C++ generator of the second picture
#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 std::complex<double> z_type;
#define Re(x) x.real()
#define Im(x) x.imag()
#define I z_type(0.,1.)
#include "fsexp.cin"
#include "conto.cin"
int main(){ int j,k,m,n; DB x,y, p,q, t; z_type z,c,d, cu,cd;
z_type Zo=z_type(.31813150520476413, 1.3372357014306895);
z_type Zc=z_type(.31813150520476413,-1.3372357014306895);
int M=150,M1=M+1;
int N=301,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("figmacloL.eps","w");ado(o,0,0,62,62);
FILE *o;o=fopen("vladi05b.eps","w");ado(o,62,62);
fprintf(o,"31 31 translate\n 10 10 scale\n");
DO(m,M1) X[m]=-3.+.04*(m-.5);
//DO(n,N1)Y[n]=-6 +.03*(n-.5);
DB sy=2.8/sinh(.005*N);
DO(n,N1) Y[n]=sy*sinh(.01*(n-N/2-.5));
/*
for(m=-20;m<21;m++){ z=z_type(Re(Zo),Im(Zo)*m/20.009); c=FSLOG(z); x=Re(c); y=Im(c); if(m==-20)M(x,y)else L(x,y) }
for(m=20;m>-21;m--){ z=z_type(Re(Zo),Im(Zo)*m/20.009); c=FSLOG(z); x=Re(c)+1;y=Im(c); L(x,y) }
fprintf(o,"1 1 0 RGB F\n");
*/
/*
for(m=-20;m<21;m++){ z=z_type(Re(Zo),Im(Zo)*m/20.008); c=FSLOG(z); x=Re(c);y=Im(c); if(m==-20)M(x,y)else L(x,y) }
for(m=20;m>-21;m--){ z=z_type(Re(Zo),Im(Zo)*m/20.008); c=FSLOG(z); x=Re(c)+1;y=Im(c);if(m==20)M(x,y)else L(x,y) }
fprintf(o,".006 W 0 0 0 RGB S\n");
*/
for(m=-3;m<4;m++) { if(m==0){M(m,-3.2)L(m,3.2)} else {M(m,-3)L(m,3)} }
for(n=-3;n<4;n++) { M( -3,n)L(3,n)}
fprintf(o,".006 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=log(maclo(z+1.));
d=maclo(z);
p= abs(c-d)/(abs(c)+abs(d));
p=-log(p)/log(10.);
// p=Re(c); q=Im(c);
if(p>-99 && p<99 && fabs(p)> 1.e-8 && fabs(p-1.)>1.e-8) g[m*N1+n]=p;
// if(q>-999 && q<999 && fabs(q)> 1.e-8) f[m*N1+n]=q;
}}
#include"plodi.cin"
fprintf(o,"showpage\n%c%cTrailer",'%','%'); fclose(o);
system("epstopdf vladi05b.eps");
system( "open vladi05b.eps"); // for macintosh
//getchar(); system("killall Preview"); //for macintosh
}
>
C++ generator of the right picture
#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 std::complex<double> z_type;
#define Re(x) x.real()
#define Im(x) x.imag()
#define I z_type(0.,1.)
#include "fsexp.cin"
#include "conto.cin"
int main(){ int j,k,m,n; DB x,y, p,q, t; z_type z,c,d, cu,cd;
z_type Zo=z_type(.31813150520476413, 1.3372357014306895);
z_type Zc=z_type(.31813150520476413,-1.3372357014306895);
int M=150,M1=M+1;
int N=301,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("vladi05c.eps","w");ado(o,62,62);
fprintf(o,"31 31 translate\n 10 10 scale\n");
DO(m,M1) X[m]=-3.+.04*(m-.5);
//DO(n,N1)Y[n]=-6 +.03*(n-.5);
DB sy=2.8/sinh(.005*N);
DO(n,N1) Y[n]=sy*sinh(.01*(n-N/2-.5));
/*
for(m=-20;m<21;m++){ z=z_type(Re(Zo),Im(Zo)*m/20.009); c=FSLOG(z); x=Re(c); y=Im(c); if(m==-20)M(x,y)else L(x,y) }
for(m=20;m>-21;m--){ z=z_type(Re(Zo),Im(Zo)*m/20.009); c=FSLOG(z); x=Re(c)+1;y=Im(c); L(x,y) }
fprintf(o,"1 1 0 RGB F\n");
*/
/*
for(m=-20;m<21;m++){ z=z_type(Re(Zo),Im(Zo)*m/20.008); c=FSLOG(z); x=Re(c);y=Im(c); if(m==-20)M(x,y)else L(x,y) }
for(m=20;m>-21;m--){ z=z_type(Re(Zo),Im(Zo)*m/20.008); c=FSLOG(z); x=Re(c)+1;y=Im(c);if(m==20)M(x,y)else L(x,y) }
fprintf(o,".006 W 0 0 0 RGB S\n");
*/
for(m=-3;m<4;m++) { if(m==0){M(m,-3.2)L(m,3.2)} else {M(m,-3)L(m,3)} }
for(n=-3;n<4;n++) { M( -3,n)L(3,n)}
fprintf(o,".006 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=exp(maclo(z-1.));
d=maclo(z);
p= abs(c-d)/(abs(c)+abs(d));
p=-log(p)/log(10.);
// p=Re(c); q=Im(c);
if(p>-99 && p<99 && fabs(p)> 1.e-8 && fabs(p-1.)>1.e-8) g[m*N1+n]=p;
// if(q>-999 && q<999 && fabs(q)> 1.e-8) f[m*N1+n]=q;
}}
#include"plodi.cin"
fprintf(o,"showpage\n%c%cTrailer",'%','%'); fclose(o);
system("epstopdf vladi05c.eps");
system( "open vladi05c.eps"); // for macintosh
//getchar(); system("killall Preview"); //for macintosh
}
Latex combiner
\documentclass[12pt]{article}
\usepackage{graphicx}
\usepackage{rotating}
\usepackage{geometry}
\paperwidth 428px
\paperheight 134px
\topmargin -106pt
\oddsidemargin -80pt
\pagestyle{empty}
\begin{document}
\newcommand \ing {\includegraphics}
\newcommand \sx {\scalebox}
\newcommand \rot {\begin{rotate}}
\newcommand \ero {\end{rotate}}
\newcommand \vladiax
{
\put(-3,58.6){\sx{.5}{$y$}}
\put(-3,49){\sx{.5}{$2$}}
\put(-3,39){\sx{.5}{$1$}}
\put(-3,29){\sx{.5}{$0$}}
\put(-7,19){\sx{.5}{$-1$}}
\put(-7, 9){\sx{.5}{$-2$}}
\put( 6 ,-4){\sx{.5}{$-2$}}
\put(17 ,-4){\sx{.5}{$-1$}}
\put(30,-4){\sx{.5}{$0$}}
\put(40, -4){\sx{.5}{$1$}}
\put(50, -4){\sx{.5}{$2$}}
\put(58.4, -4){\sx{.5}{$x$}}
}
%~\sx{2.33}{\begin{picture}(70,60)
~\sx{2.02}{\begin{picture}(70,60)
\put(0,0){\includegraphics{vladi05a}}
\put(25,24){\sx{.4}{\rot{90} $ u\!=\!\Re(L)$ \ero }}
\put(32,51){\sx{.4}{\rot{-61} $ v\!=\!\Im(L)$ \ero }}
\put(27,44){\sx{.4}{\rot{-36} $ v\!=\!1$ \ero }}
\put(32.6,26){\sx{.4}{\rot{90} $ u\!=\!1$ \ero }}
%\put(26,30){\sx{.4}{\rot{ 0} $ v\!=\!0$ \ero }}
\put(26,15.6){\sx{.4}{\rot{32} $ v\!=\!-1$ \ero }}
\put(35,11){\sx{.4}{\rot{61} $ v\!=\!\Im(L^*)$ \ero }}
\vladiax
\end{picture}}
\sx{2.02}{\begin{picture}(70,60)
\put(0,0){\includegraphics{vladi05b}}
\vladiax
\put(23,29){\sx{.55}{$15$}}
\put(43, 55){\sx{.55}{$D_{1}\!<\!1$}}
\end{picture}}
\sx{2.02}{\begin{picture}(58,60)
\put(0,0){\includegraphics{vladi05c}}
\vladiax
\put(32,29){\sx{.55}{$15$}}
\put(44,56){\sx{.55}{$D_{2}\!<\!1$}}
\end{picture}}
\end{document}
References
- ↑
https://www.amazon.co.jp/-/en/Dmitrii-Kouznetsov/dp/6202672862
https://www.morebooks.de/shop-ui/shop/product/978-620-2-67286-3
https://mizugadro.mydns.jp/BOOK/468.pdf
Dmitrii Kouznetsov. Superfunctions. Lambert Academic Publishing, 2020. - ↑
https://www.morebooks.de/store/ru/book/Суперфункции/isbn/978-3-659-56202-0
http://mizugadro.mydns.jp/BOOK/202.pdf Д.Кузнецов. Суперфункции. Lambert Academic Publishing, 2014. - ↑ http://mizugadro.mydns.jp/PAPERS/2010vladie.pdf D.Kouznetsov. Superexponential as special function. Vladikavkaz Mathematical Journal, 2010, v.12, issue 2, p.31-45. Figure 5.
Keywords
«Agreement», «fsexp.cin», «Natural tetration», «Plodi.cin», «Superfunctions», «Tetration», «Суперфункции»,
File history
Click on a date/time to view the file as it appeared at that time.
| Date/Time | Thumbnail | Dimensions | User | Comment | |
|---|---|---|---|---|---|
| current | 06:14, 1 December 2018 | 1,783 × 558 (342 KB) | Maintenance script (talk | contribs) | Importing image file |
You cannot overwrite this file.
File usage
There are no pages that use this file.