#include "sopnamsp.h" #include "machdefs.h" #include #include #include #include #include #include #include "ntuple.h" #include "geneutils.h" /* ...Check autour de zero > cmvsinxsx -n 4 1e-6,-0.1,0.1 > cmvsinxsx -n 5 1e-6,-0.1,0.1 ...Check autour de Pi > cmvsinxsx -n 4 1e-6,3.041592659,3.241592659 > cmvsinxsx -n 5 1e-6,3.041592659,3.241592659 ...Check autour de -Pi > cmvsinxsx -n 4 1e-6,-3.241592659,-3.041592659 > cmvsinxsx -n 5 1e-6,-3.241592659,-3.041592659 ...Check longue echelle > cmvsinxsx -n 10 0.0001,-6.5,6.5 > cmvsinxsx -n 11 0.0001,-6.5,6.5 ...Check sans plot > cmvsinxsx -n 100 0.00001,-6.5,6.5 > cmvsinxsx -n 1000 0.00001,-6.5,6.5 */ int main(int narg,char *arg[]) { double dt = 0.000001; //double tmin = -0.1, tmax = 0.1; double tmin = M_PI-0.1, tmax = M_PI+0.1; unsigned long N = 4; bool only_test = false; double pr_test = 1.e99; int nvec=0; double veccent=0., vecmax = -2.; //--- Read arguments char c; while((c = getopt(narg,arg,"htp:n:v:")) != -1) { switch (c) { case 'n' : sscanf(optarg,"%lu",&N); break; case 't' : only_test = true; break; case 'p' : sscanf(optarg,"%lf",&pr_test); break; case 'v' : sscanf(optarg,"%d,%lf",&nvec,&vecmax); break; case 'h' : default : cout<<"cmvsinxsx [-t] [-p eps_print] [-n N] [-v nv,(+-)vmax (rad)]"< ["<<-vecmax/2<<","<1e-15) { double ref = xnt[1]/xnt[0]; av = fabs(xnt[3]-ref); if(av>pr_test) printf("t=%.15e sx/x=%.15e, %.15e d=%g\n",t,xnt[3],ref,av); if(av>diffsx) diffsx = av; av = fabs(xnt[4]-ref*ref); if(av>pr_test) printf("t=%.15e (sx/x)^2=%.15e, %.15e d=%g\n",t,xnt[4],ref*ref,av); if(av>diffsx2) diffsx2 = av; } if(fabs(xnt[1])>1e-15) { double ref = xnt[2]/xnt[1]; av = fabs(xnt[5]-ref); if(av>pr_test) printf("t=%.15e snx/sx=%.15e, %.15e d=%g\n",t,xnt[5],ref,av); if(fabs(av)>diffsnx) diffsnx = av; av = fabs(xnt[6]-ref*ref); if(av>pr_test) printf("t=%.15e (snx/sx)^2=%.15e, %.15e d=%g\n",t,xnt[6],ref*ref,av); if(fabs(av)>diffsnx2) diffsnx2 = av; } n++; } cout<<"Number of entries = "< vsx,vsx2,vsnx,vsnx2; if(nvec>1) { vsx.ReSize(nvec); vsx2.ReSize(nvec); vsnx.ReSize(nvec); vsnx2.ReSize(nvec); for(int i=0;i0) pos.PutObject(vsx,"vsx"); if(vsx2.Size()>0) pos.PutObject(vsx2,"vsx2"); if(vsnx.Size()>0) pos.PutObject(vsnx,"vsnx"); if(vsnx2.Size()>0) pos.PutObject(vsnx2,"vsnx2"); return 0; } /* openppf cmvsinxsx.ppf zone n/plot nt.s%t ! ! "connectpoints" n/plot nt.sn%t ! ! "connectpoints same red" #------- zone 1 3 n/plot nt.sx%t ! ! "connectpoints" n/plot nt.asx%t ! ! "connectpoints same green" n/plot nt.sx-s/t%t fabs(t)>1e-15 ! "connectpoints" n/plot nt.sx-asx%t ! ! "connectpoints" #------- zone 1 3 n/plot nt.sx2%t ! ! "connectpoints" n/plot nt.sx*sx%t ! ! "connectpoints same red" n/plot nt.asx2%t ! ! "connectpoints same green" n/plot nt.sx2-pow(s/t,2.)%t fabs(t)>1e-15 ! "connectpoints" n/plot nt.sx2-asx2%t ! ! "connectpoints" #------- zone 1 3 n/plot nt.snx%t ! ! "connectpoints" n/plot nt.asnx%t ! ! "connectpoints same green" n/plot nt.snx-sn/s%t fabs(s)>1e-15 ! "connectpoints" n/plot nt.snx-asnx%t ! ! "connectpoints" #------- zone 1 3 n/plot nt.snx2%t ! ! "connectpoints" n/plot nt.snx*snx%t ! ! "connectpoints same red" n/plot nt.asnx2%t ! ! "connectpoints same green" n/plot nt.snx2-pow(sn/s,2.)%t fabs(s)>1e-15 ! "connectpoints" n/plot nt.snx2-asnx2%t ! ! "connectpoints" #------- openppf cmvsinxsx.ppf zone 2 2 n/plot vsx.val%n ! ! n/plot vsx2.val%n ! ! n/plot vsnx.val%n ! ! n/plot vsnx2.val%n ! ! zone fftforw vsx fvsx fftforw vsx2 fvsx2 fftforw vsnx fvsnx fftforw vsnx2 fvsnx2 zone n/plot fvsx.val%n ! ! "connectpoints" n/plot fvsx2.val%n ! ! "connectpoints" n/plot fvsnx.val%n ! ! "connectpoints" n/plot fvsnx2.val%n ! ! "connectpoints" */