/******************************************************************************
* *
* COMPUTE MERTENS FUNCTION *
* 12/07/15 (dkc) *
* *
******************************************************************************/
#include <math.h>
long long newhicl(unsigned long long x, unsigned int u, char *mob, int *M) {
char temp;
unsigned int j,m;
unsigned long long xom;
long long i;
long long sumb;
sumb=0;
for (m=1; m<=u; m++) {
temp=mob[m-1];
if (temp==0)
continue;
xom=x/m;
j=(unsigned int)sqrt((double)xom);
j=j+1;
#pragma omp parallel for reduction (+:sumb)
for (i=(long long)j; i<=(long long)xom; i++) {
sumb=sumb+(long long)(M[xom/(unsigned long long)i-1]*temp);
}
}
return(sumb);
}