/******************************************************************************
*									      *
*  COMPUTE MERTENS FUNCTION						      *
*  10/30/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,bot,delta;
unsigned 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;
   bot=xom/(unsigned long long)j;
   i=(unsigned long long)j;
   while (i<=xom) {
      delta=xom/bot-i+1;
      if (temp<0)
	 sumb=sumb-(long long)(M[bot-1]*delta);
      else
	 sumb=sumb+(long long)(M[bot-1]*delta);
      i=i+delta;
      bot=bot-1;
      }
   }
return(sumb);
}