Example #1
0
 inline double normal() {
   double u_1 = 0;
   while (u_1 == 0) {
     u_1 = rndnum();
   }
   double u_2 = 0;
   while (u_2 == 0) {
     u_2 = rndnum();
   }
   return sqrt(-2*log(u_1)) * sin(2*PI*u_2);
 }
Example #2
0
int rndval(int a, int b)
{
  int temp;
	
  if (a == b) {
    return a;
  }
	
  if (b < a) {
    temp = a;
    a = b;
    b = temp;
  }
	
  temp = rndnum(b - a);
	
  return temp + a;
}
Example #3
0
int main(int argc, char **argv)
{
  int i,j;
  int lpat,lbuffer;
  MILL *rand;

  if( argc < 2 ){
    printf("Usage:\n\t%s <ref|train|test>\n",argv[0]);
    exit(0);
  }

  if( strcasecmp(argv[1],"ref") == 0 ) {
    lbuffer = 512*1024+17;
    lpat    = 6;
    printf("KMP with reference input set\n");
  }else if( strcasecmp(argv[1],"train") == 0 ){
    lbuffer = 96*1024+17;
    lpat    = 5;
    printf("KMP with test input set\n");
  }else if( strcasecmp(argv[1],"test") == 0 ){
    lbuffer = 32*1024+17;
    lpat    = 4;
    printf("KMP with test input set\n");
  }else{
    printf("Invalid data set use ref or train or test\n");
    exit(-1);
  }
      
  buffer = (char *)malloc(lbuffer);
  if( !buffer ){
    fprintf(stderr,"Not enough memory\n");
    exit(0);
  }

  rand = init_mill(0xf621,0x3128,0x8253);

  pat  = (char *)malloc(lpat+1);
  next = (int *)malloc(sizeof(int)*lpat);
  if( !pat || !next ){
    fprintf(stderr,"Not enough memory\n");
    exit(0);
  }

  fprintf(stderr,"Benchmark begin...\n");

  for(i=0;i<lbuffer;i++){
    buffer[i] = rndnum(rand) % 7 + 'a';
  }

  buffer[lbuffer-1]=0; /* end of buffer */

  for(j=0;j<23;j++) {
    char *pos;
    int conta;
    
    printf("%2d Pattern:",j+1);
    for(i=0;i<lpat;i++){
      pat[i] = rndnum(rand) % 7 + 'a';
      printf("%c",pat[i]);
    }
    pat[lpat]=0;

    /* Shorten lenght of buffer */
    buffer[3*lbuffer/(j % 3+3)-1]=0;

    conta = 0;
    pos = &buffer[(3*lbuffer/(j % 3+3)-1)/4];
    while(1){
      pos = search(pat,pos);
      if( pos == 0 )
	break;
      pos++;
      conta++;
    }

    printf(": found %d times\n",conta);

    buffer[3*lbuffer/(j % 3+3)-1]= 'a';
  }
  
  printf("Benchmark finish...\n");

  nuke_mill(rand);

  return 0;
}