/*CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C C
C CHECK RESULTS GIVEN BY FAREY SERIES ALGORITHM C
C 06/11/07 (DKC) C
C C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC*/
#include <stdio.h>
#include <math.h>
double mertens2(unsigned int N, unsigned int *count, double *sum);
double mertens3(unsigned int N, unsigned int *count, double *sum);
double merten4b(unsigned int N, unsigned int *count, double *sum,
unsigned int half);
//
unsigned int outflag=1; // delta or delta^2
unsigned int horder=0; // half-order flag
//
void main() {
unsigned int N,count1[2],count2[2];
double sum1[2],sum2[4],suma,sumb,temp;
FILE *Outfp;
Outfp = fopen("out4f.dat","w");
//
// ORDER OF FAREY SERIES
//
suma=0.0;
/***************/
/* BEGIN LOOP */
/***************/
for (N=3; N<=2560; N++) {
// suma=mertens3(N, count1, sum1);
suma=0.0;
sumb=merten4b(N, count2, sum2, horder);
printf("N=%d, sums=%e %e %e %e \n",N,suma,sumb,sum2[2],sum2[3]);
if (outflag==0)
fprintf(Outfp," %e\n",sum2[2]);
else
fprintf(Outfp," %e\n",sum2[3]);
/* if ((sum1[0]!=sum2[0])||(sum1[1]!=sum2[1])||(suma!=sumb)) {
temp=sum1[0]-sum2[0];
if (temp<0.0)
temp=-temp;
if (temp>0.000001) {
printf(" %d %e %e %e %e %e %e\n",N,suma,sumb,sum1[0],sum2[0],sum1[1],sum2[1]);
break;
}
temp=sum1[1]-sum2[1];
if (temp<0.0)
temp=-temp;
if (temp>0.000001) {
printf(" %d %e %e %e %e %e %e\n",N,suma,sumb,sum1[0],sum2[0],sum1[1],sum2[1]);
break;
}
temp=suma-sumb;
if (temp<0.0)
temp=-temp;
if (temp>0.000001) {
printf(" %d %e %e %e %e %e %e\n",N,suma,sumb,sum1[0],sum2[0],sum1[1],sum2[1]);
break;
}
}
if ((count1[0]!=count2[0])||(count1[1]!=count2[1])) {
printf(" %d %d %d %d \n",count1[0],count2[0],count1[1],count2[1]);
break;
} */
}
fclose(Outfp);
/***************/
/* END LOOP */
/***************/
return;
}