53 if(x<=0||y<=0||z<=0||t<=0)
59 if (self->initialised)
61 self->initialised =
istrue;
62 switch(
sizeof(
long int)/8){
91 char prefix[] =
"Error in randomWH.c: ";
92 fprintf(stderr,
"%s %s\n",prefix, message);
126 return (
long int*)&
self->x;
142 fprintf(stderr,
"Could not initialise randomWH function pointer\n");
163 self->x = 11600L * (
self->x % 185127L) - 10379L* (self->x/185127L);
164 self->y = 47003L * (
self->y % 45688L) - 10479L* (self->y/ 45688L);
165 self->z = 23000L * (
self->z % 93368L) - 19423L* (self->z/ 93368L);
166 self->t = 33000L * (
self->t % 65075L) - 8123L* (self->t/ 65075L);
168 self->x += 2147483579L;
170 self->y += 2147483543L;
172 self->z += 2147483423L;
174 self->t += 2147483123L;
175 result = (double)(self->x)*0.0000000004656613022697297188506231646486
176 + (double)(self->y)*0.0000000004656613100759859932486569933169
177 + (double)(self->z)*0.0000000004656613360968421314794009471615
178 + (double)(self->t)*0.0000000004656614011489951998100056779817;
200 self->x = (11600L *
self->x) % 2147483579L;
201 self->y = (47003L *
self->y) % 2147483543L;
202 self->z = (23000L *
self->z) % 2147483423L;
203 self->t = (33000L *
self->t) % 2147483123L;
204 result = (double)(self->x)*0.0000000004656613022697297188506231646486
205 + (double)(self->y)*0.0000000004656613100759859932486569933169
206 + (double)(self->z)*0.0000000004656613360968421314794009471615
207 + (double)(self->t)*0.0000000004656614011489951998100056779817;
224 double unif =
self->randomWH(
self);
225 double p_bar = 1-prob;
226 long int result = 1L;
228 result += log(unif)/log(p_bar);
269 double unif =
self->randomWH(
self);
292 for(count=0;count<trials;count++)
293 result += self->bernoulli(
self,prob);
309 double randvar =
self->randomWH(
self);
311 return upper_inclusive;
312 randvar = lower_inclusive + randvar * (upper_inclusive - lower_inclusive +1);