[R] Bug on MWC1019?
Guido Montorsi
montorsi at polito.it
Mon Mar 14 16:54:46 CET 2005
Dear R-developer (Marsaglia??)
The following piece of code from package SuppDist , routine "dist.cc" seems
to have a bug
ULONG MWC1019(void){
ULONG long t;
int i = endQ-1;
t = 147669672LL*Q[i] + Q[endQ];
Q[endQ] = (t>>32);
if(i>0)
return(Q[i--] = t);
i = endQ-1;
return(Q[0] = t);
}
in fact , being "i" a local variable that have automatic storage, it is
initialized to endQ-1 (1019)
each time the routine is called so that it can never
cycle through all values as it should.
I think it should be declared as static:
ULONG MWC1019(void){
ULONG long t;
static int i = endQ-1;
t = 147669672LL*Q[i] + Q[endQ];
Q[endQ] = (t>>32);
if(i>0)
return(Q[i--] = t);
i = endQ-1;
return(Q[0] = t);
}
Best regards,
Guido Montorsi
More information about the R-help
mailing list