/*CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C CHECK WHETHER LENGTHS, CUMULATIVE LENGTHS, AND SQRT(LENGTH) U.D. (MOD 1) C C 04/20/14 (DKC) C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC*/ #include <stdio.h> #include <math.h> unsigned int haros1(unsigned int N, unsigned int M, unsigned int *R, unsigned int H, unsigned int K, unsigned int HP, unsigned int KP); // unsigned int sqrtflg=1; // compute sum of square roots of lengths unsigned int outflg=2; unsigned int flag=1; // 0 (linear), 1 (quadratic), 2 (cubic), 3 (quartic) // // 4 (sine), 5 (cosine) void main() { unsigned int N,S[250000],MAXN; unsigned int H,K,HP,KP; unsigned int L,I; double temp1,temp2,func,len,tmpsum,expect,lensum,lenfunc,sqrtsum; FILE *Outfp; Outfp = fopen("out1e.dat","w"); // // ORDER OF FAREY SERIES // MAXN=900; /***************/ /* BEGIN LOOP */ /***************/ for (N=2; N<=MAXN; N++) { // // GENERATE FAREY SERIES // L=haros1(N,0,S,0,1,1,N); len=0.0; tmpsum=0.0; // length or square root of length lensum=0.0; // cumulative length or square root of length sqrtsum=0.0; for (I=0; I<(L-1); I++) { H=S[I]>>16; K=S[I]&0xffff; HP=S[I+1]>>16; KP=S[I+1]&0xffff; temp1=((double)H-(double)HP)*((double)H-(double)HP); temp1=temp1+((double)K-(double)KP)*((double)K-(double)KP); len=len+sqrt(temp1); // // fractional part of length // if (sqrtflg==0) temp1=sqrt(temp1); else temp1=sqrt(sqrt(temp1)); sqrtsum=sqrtsum+temp1; temp1=temp1-(unsigned int)temp1; temp2=len-(unsigned int)len; if (flag==0) { func=temp1; lenfunc=temp2; expect=0.5; } if (flag==1) { func=temp1*temp1; lenfunc=temp2*temp2; expect=0.3333333; } if (flag==2) { func=temp1*temp1*temp1; lenfunc=temp2*temp2*temp2; expect=0.25; } if (flag==3) { func=temp1*temp1*temp1*temp1; lenfunc=temp2*temp2*temp2*temp2; expect=0.20; } if (flag==4) { func=sin(temp1); // printf(" %e \n",func); lenfunc=sin(temp2); expect=cos(1.0); } if (flag==5) { func=cos(temp1); lenfunc=cos(temp2); expect=sin(1.0); } tmpsum=tmpsum+func; // printf(" %e \n",tmpsum); lensum=lensum+lenfunc; } len=(len+1.0); temp2=len-(unsigned int)len; len=len/(double)L; // average lengths if (flag==0) lenfunc=temp2; if (flag==1) lenfunc=temp2*temp2; if (flag==2) lenfunc=temp2*temp2*temp2; if (flag==3) lenfunc=temp2*temp2*temp2*temp2; if (flag==4) lenfunc=sin(temp2); if (flag==5) lenfunc=cos(temp2); lensum=lensum+lenfunc; lensum=lensum/(double)L; // average cumulative lengths // if (flag==5) // cos(0)=1 tmpsum=tmpsum+1.0; tmpsum=tmpsum/(double)L; // average func(fractional part) sqrtsum=(sqrtsum+1.0)/(double)L; // average square roots of lengths printf("%d %d %e %e %e %e %e \n",N,L,len,sqrtsum,lensum,tmpsum,expect); if (outflg==0) fprintf(Outfp," %e\n",len); else { if (outflg==1) fprintf(Outfp," %e\n",sqrtsum); else fprintf(Outfp," %e\n",tmpsum); } } /***************/ /* END LOOP */ /***************/ fclose(Outfp); return; }