/*CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C                                                                             C
C  GENERATE FAREY SERIES AND COMPUTE UPPER BOUND MINUS LOWER BOUND	      C
C  05/29/14 (DKC)							      C
C                                                                             C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC*/
#include <stdio.h>
#include <math.h>
unsigned int euler(unsigned int a);
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 out=1;	// 0 for sum, 1 for sqrt(sum)
//
void main() {
unsigned int N,R[250000],MAXN;
unsigned int L,I,temp;
double sqsum,sum;
FILE *Outfp;
Outfp = fopen("out1b4.dat","w");
//
// ORDER OF FAREY SERIES
//
MAXN=200;
for (N=2; N<=MAXN; N++) {
//
// GENERATE FAREY SERIES
//
   L=haros1(N,0,R,0,1,1,N);
   for (I=0; I<L; I++) {
      if (I!=0) {
	 temp=euler(R[I]&0xffff);
	 if ((temp/4)*4!=temp)
	    sum=sum+1.0/(double)temp;
	 }
      else
	 sum=0.0;
      }
   printf("N=%d, sum=%e \n",N,sum);
   sqsum=sqrt(sum);
   if (out==0)
      fprintf(Outfp," %e\n",sum);
   else
      fprintf(Outfp," %e\n",sqsum);
   }
fclose(Outfp);
return;
}