bignum.c (bary_sparse_p): do not comsume Random::DEFAULT
It uses random to determine if the bignum is sparse or not. It is arguable if three-digit samples are enough or not to determine it, but anyway, consuming Random source implicitly is not good. I introduced the random sampling mechanism, and I don't know any significant reason to do so. So, let's remove it. This change makes the sampling points fixed: 40th, 50th, and 60th percentiles.
This commit is contained in:
parent
8a39e6d653
commit
eb21e8add3
6
bignum.c
6
bignum.c
@ -2359,9 +2359,9 @@ bary_sparse_p(const BDIGIT *ds, size_t n)
|
||||
{
|
||||
long c = 0;
|
||||
|
||||
if ( ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
|
||||
if (c <= 1 && ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
|
||||
if (c <= 1 && ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
|
||||
if ( ds[2 * n / 5]) c++;
|
||||
if (c <= 1 && ds[ n / 2]) c++;
|
||||
if (c <= 1 && ds[3 * n / 5]) c++;
|
||||
|
||||
return (c <= 1) ? 1 : 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user