// c++ -std=c++11 AteSuFacMap.cc -O2 -o AteSuFacMap
#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"ado.cin"
 #define M(x,y) fprintf(o,"%6.4f %6.4f M\n",1.*(x),1.*(y));
 #define L(x,y) fprintf(o,"%6.4f %6.4f L\n",1.*(x),1.*(y));
#include "Conrec6.cin"
#include "fac.cin"
#include "SuFac.cin"
#include "fslog.cin"
//#include "filog.cin"
int main(){ int j,k,m,n; DB x,y, p,q, t; z_type z,c,d;
//int M=971,M1=M+1;
int M=680,M1=M+1;
int N=751,N1=N+1;
DB X[M1],Y[N1], g[M1*N1],f[M1*N1];
FILE *o;o=fopen("AteSuFacMap.eps","w");ado(o,308,308);
fprintf(o,"4 104 translate\n 100 100 scale\n");

DO(m,M1) X[m]=0+.004*(m-.5);
DO(n,N1) Y[n]=-1+.004*(n-.5);

for(m=0;m<4;m++){M(m,-1)L(m,2)}
for(n=-1;n<3;n++){M(0,n)L(3,n)}
fprintf(o,"2 setlinecap .0012 W 0 0 0 RGB S\n");
//fprintf(o,".0007 W 0 0 0 RGB S\n");
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=Filog(z);
// c=z*z*sin(1./z);
c=superfac(z); //SuFac
c=FSLOG(c); // ate
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;}
       }}

printf("Try to plot\n"); // getchar();

fprintf(o,"1 setlinejoin 1 setlinecap\n"); p=.2;q=.2;

for(m=-2;m<3;m++)for(n=1;n<10;n+=1)Conrec6(o,f,X,Y,M1,N1,(m+.1*n), q); fprintf(o,".006 W 0 .6 0 RGB S\n");
for(m=0;m<3;m++) for(n=1;n<10;n+=1)Conrec6(o,g,X,Y,M1,N1,-(m+.1*n), q); fprintf(o,".006 W .9 0 0 RGB S\n");
for(m=0;m<3;m++) for(n=1;n<10;n+=1)Conrec6(o,g,X,Y,M1,N1, (m+.1*n), q); fprintf(o,".006 W 0 0 .9 RGB S\n");
for(m=1;m<3;m++) Conrec6(o,f,X,Y,M1,N1, (0.-m),p); fprintf(o,".012 W .9 0 0 RGB S\n");
for(m=1;m<3;m++) Conrec6(o,f,X,Y,M1,N1, (0.+m),p); fprintf(o,".012 W 0 0 .9 RGB S\n");
                  Conrec6(o,f,X,Y,M1,N1, (0. ),p); fprintf(o,".012 W .6 0 .6 RGB S\n");
for(m=-2;m<3;m++) Conrec6(o,g,X,Y,M1,N1, (0.+m),p); fprintf(o,".012 W 0 0 0 RGB S\n");
fprintf(o,"showpage\n%c%cTrailer",'%','%'); fclose(o);
     system("epstopdf AteSuFacMap.eps"); 
     system(    "open AteSuFacMap.pdf"); //for mac
}
