aboutsummaryrefslogtreecommitdiffstats
path: root/test/LLC/poisson.c
blob: 7d9289d9c29581d0bdce927ecb16809785bf792d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* For copyright information, see olden_v1.0/COPYRIGHT */

/**********************************************************
 * poisson.c: handles math routines for health.c          *
 **********************************************************/

#include <stdio.h>
#include <math.h>

/* From health.h */
#define IA 16807
#define IM 2147483647
#define AM (1.0 / IM)
#define IQ 127773
#define IR 2836
#define MASK 123459876

float my_rand(long idum) 
{
  long  k;
  float answer;
  
  idum ^= MASK;
  k = idum / IQ;
  idum = IA * (idum - k * IQ) - IR * k;
  idum ^= MASK;
  if (idum < 0) 
    idum  += IM;
  answer = AM * idum;
  return answer; 
}

int
main(int argc, char** argv)
{
  printf("my_rand(%d) = %g\n", 2555540, my_rand(2555540));
  printf("my_rand(%d) = %g\n", 2427763, my_rand(2427763));
  return 0;
}