fast-path for n•rand.Range 1
This commit is contained in:
parent
2dd3798228
commit
3e9af0a910
@ -365,10 +365,14 @@ B rand_range_c2(B t, B w, B x) {
|
|||||||
|
|
||||||
RAND_START;
|
RAND_START;
|
||||||
Arr* r;
|
Arr* r;
|
||||||
if (max<1) {
|
if (max<=1) {
|
||||||
if (max!=0) thrM("(rand).Range: 𝕩 cannot be negative");
|
if (max==0) {
|
||||||
f64* rp; r = m_f64arrp(&rp, am);
|
f64* rp; r = m_f64arrp(&rp, am);
|
||||||
PLAINLOOP for (usz i = 0; i < am; i++) rp[i] = wy2u01(wyrand(&seed));
|
PLAINLOOP for (usz i = 0; i < am; i++) rp[i] = wy2u01(wyrand(&seed));
|
||||||
|
} else {
|
||||||
|
if (max!=1) thrM("(rand).Range: 𝕩 cannot be negative");
|
||||||
|
r = allZeroes(am);
|
||||||
|
}
|
||||||
} else if (max > (1ULL<<31)) {
|
} else if (max > (1ULL<<31)) {
|
||||||
if (max >= 1LL<<53) thrM("(rand).Range: 𝕩 must be less than 2⋆53");
|
if (max >= 1LL<<53) thrM("(rand).Range: 𝕩 must be less than 2⋆53");
|
||||||
f64* rp; r = m_f64arrp(&rp, am);
|
f64* rp; r = m_f64arrp(&rp, am);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user