Ok, I made a testing suite. I grabbed pracrand (pre0.95) from sourceforge (seriously? who uses that still?).
Then I used the following script:
import Random
function E((s0,s1,s2,s3,s4))
tmp = s0+s3
res = (tmp<<23) | (tmp>>41)
res += s0
t = s1<<17
s2 = xor(s2, s0)
s3 = xor(s3, s1)
s1 = xor(s1, s2)
s0 = xor(s0, s3)
s2 = xor(s0, t)
s3 = (s3 <<45) | (s3>>19)
(res, (s0,s1,s2,s3,s4))
end
function split(s)
mul = 0xd1342543de82ef95
a = (0x214c146c88e47cb7, 0xa66d8cc21285aafa, 0x68c7ef2d7b1a54d4, 0xb053a7d7aa238c61)
m = (0xaef17502108ef2d9, 0xf34026eeb86766af, 0x38fd70ad58dd9fbb, 0x6677f9b93ab0c04d)
x = s[5] * mul + 1
child = ntuple(4) do idx
c = s[idx]
w = xor(x , a[idx])
c += w*(2*c + 1)
c = xor(c, c >> ((c>>59) + 5))
c *= m[idx]
c = xor(c, c>>43)
end
parent = ntuple(i->s[i], 4)
((parent..., x),
(child..., x))
end
function emit_recurse(buf, state, depth)::NTuple{5, UInt64}
if depth == 0
r, state = E(state)
write(buf, r)
r, state = E(state)
write(buf, r)
state
else
parent, child = split(state)
emit_recurse(buf, child, depth-1)
emit_recurse(buf, parent, depth-1)
end
end
function emit_recurse_loop(buf, state, depth, N)
sz = 0
while sz < N
state = emit_recurse(buf, state, depth)
sz += 1 << (depth+1)
end
end
function emit_recurse_loop_reseeded(buf, state, depth, N)
state = ntuple(i->rand(Random.RandomDevice(), UInt64), 5)
sz = 0
while sz < N
emit_recurse(buf, state, depth)
sz += 1 << (depth+1)
state = ntuple(i->rand(Random.RandomDevice(), UInt64), 5)
end
end
function emit_deep_loop(buf, state, N)
sz = 0
while sz < N
parent, state = split(state)
r, parent = E(parent)
write(buf, r)
r, parent = E(parent)
write(buf, r)
sz += 2
end
end
function emit_shallow_loop(buf, state, N)
sz = 0
while sz< N
r, state = E(state)
write(buf, r)
sz += 1
end
end
Base.buffer_writes(stdout)
#julia> ntuple(i->rand(Random.RandomDevice(),UInt64), 5)
#(0xe6bb09b2c315d3da, 0x477b96132c09a3fc, 0xf543c48fbd2bb03f, 0x97becdc7ae6734cb, 0xa56101f92d1777ba)
#
init_state = (0xe6bb09b2c315d3da, 0x477b96132c09a3fc, 0xf543c48fbd2bb03f, 0x97becdc7ae6734cb, 0xa56101f92d1777ba)
And now the tests. First, congrats, you removed the problem:
$ julia -L rngScript.jl -e "emit_recurse_loop_reseeded(stdout, init_state, 7, 1<<30)" | ./RNG_test stdin
RNG_test using PractRand version 0.95
RNG = RNG_stdin, seed = unknown
test set = core, folding = standard(unknown format)
rng=RNG_stdin, seed=unknown
length= 256 megabytes (2^28 bytes), time= 3.1 seconds
no anomalies in 217 test result(s)
rng=RNG_stdin, seed=unknown
length= 512 megabytes (2^29 bytes), time= 7.2 seconds
Test Name Raw Processed Evaluation
FPF-14+6/16:all R= +4.8 p = 5.3e-4 unusual
...and 231 test result(s) without anomalies
rng=RNG_stdin, seed=unknown
length= 1 gigabyte (2^30 bytes), time= 14.5 seconds
no anomalies in 251 test result(s)
rng=RNG_stdin, seed=unknown
length= 2 gigabytes (2^31 bytes), time= 27.7 seconds
no anomalies in 269 test result(s)
rng=RNG_stdin, seed=unknown
length= 4 gigabytes (2^32 bytes), time= 52.6 seconds
no anomalies in 283 test result(s)
error reading standard input
Second, congrats, the degraded LCG + output-mix mode (where xoshiro is mostly ignored,S C^n E
) is also good enough:
$ julia -L rngScript.jl -e "emit_deep_loop(stdout, init_state, 1<<30)" | ./RNG_test stdin
RNG_test using PractRand version 0.95
RNG = RNG_stdin, seed = unknown
test set = core, folding = standard(unknown format)
rng=RNG_stdin, seed=unknown
length= 256 megabytes (2^28 bytes), time= 2.8 seconds
Test Name Raw Processed Evaluation
[Low1/32]DC6-9x1Bytes-1 R= -4.4 p =1-3.6e-3 unusual
...and 216 test result(s) without anomalies
rng=RNG_stdin, seed=unknown
length= 512 megabytes (2^29 bytes), time= 6.7 seconds
no anomalies in 232 test result(s)
rng=RNG_stdin, seed=unknown
length= 1 gigabyte (2^30 bytes), time= 13.4 seconds
no anomalies in 251 test result(s)
rng=RNG_stdin, seed=unknown
length= 2 gigabytes (2^31 bytes), time= 25.6 seconds
no anomalies in 269 test result(s)
rng=RNG_stdin, seed=unknown
length= 4 gigabytes (2^32 bytes), time= 48.3 seconds
no anomalies in 283 test result(s)
error reading standard input
However, xoshiro itself seems to fail the test battery:
$ julia -L rngScript.jl -e "emit_shallow_loop(stdout, init_state, 1<<30)" | ./RNG_test stdin
RNG_test using PractRand version 0.95
RNG = RNG_stdin, seed = unknown
test set = core, folding = standard(unknown format)
rng=RNG_stdin, seed=unknown
length= 256 megabytes (2^28 bytes), time= 2.5 seconds
Test Name Raw Processed Evaluation
BCFN(2+0,13-2,T) R>+99999 p = 0 FAIL !!!!!!!!
BCFN(2+1,13-2,T) R>+99999 p = 0 FAIL !!!!!!!!
BCFN(2+2,13-3,T) R>+99999 p = 0 FAIL !!!!!!!!
BCFN(2+3,13-3,T) R>+99999 p = 0 FAIL !!!!!!!!
BCFN(2+4,13-3,T) R>+99999 p = 0 FAIL !!!!!!!!
BCFN(2+5,13-4,T) R>+99999 p = 0 FAIL !!!!!!!!
BCFN(2+6,13-5,T) R>+99999 p = 0 FAIL !!!!!!!!
BCFN(2+7,13-5,T) R>+99999 p = 0 FAIL !!!!!!!!
BCFN(2+8,13-6,T) R>+99999 p = 0 FAIL !!!!!!!!
BCFN(2+9,13-6,T) R>+99999 p = 0 FAIL !!!!!!!!
BCFN(2+10,13-7,T) R=+68222 p = 0 FAIL !!!!!!!!
BCFN(2+11,13-8,T) R=+40590 p = 0 FAIL !!!!!!!!
BCFN(2+12,13-8,T) R=+20312 p = 8e-5156 FAIL !!!!!!!!
BCFN(2+13,13-9,T) R=+11682 p = 5e-2626 FAIL !!!!!!!!
BCFN(2+14,13-9,T) R= +5834 p = 4e-1312 FAIL !!!!!!!!
DC6-9x1Bytes-1 R>+99999 p = 0 FAIL !!!!!!!!
Gap-16:A R>+99999 p = 0 FAIL !!!!!!!!
Gap-16:B R>+99999 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(0,14-0) R>+99999 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(1,14-0) R>+99999 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(2,14-0) R>+99999 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(3,14-0) R>+99999 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(4,14-1) R>+99999 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(5,14-2) R>+99999 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(6,14-2) R>+99999 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(8,14-4) R>+99999 p = 0 FAIL !!!!!!!!
FPF-14+6/16:all R>+99999 p = 0 FAIL !!!!!!!!
FPF-14+6/16:cross R>+99999 p = 0 FAIL !!!!!!!!
BRank(12):128(4) R= +2544 p~= 4e-1354 FAIL !!!!!!!!
BRank(12):256(4) R= +9433 p~= 7e-5018 FAIL !!!!!!!!
BRank(12):384(1) R= +6783 p~= 5e-2043 FAIL !!!!!!!!
BRank(12):512(2) R=+14951 p~= 1e-4501 FAIL !!!!!!!!
BRank(12):768(1) R=+15738 p~= 8e-4739 FAIL !!!!!!!!
BRank(12):1K(2) R=+30782 p~= 2e-9267 FAIL !!!!!!!!
BRank(12):1536(1) R=+32616 p~= 2e-9819 FAIL !!!!!!!!
BRank(12):2K(1) R=+43896 p~= 0 FAIL !!!!!!!!
mod3n(5):(0,9-6) R=+33374 p = 0 FAIL !!!!!!!!
mod3n(5):(1,9-6) R=+13537 p = 2e-4623 FAIL !!!!!!!!
mod3n(5):(2,9-6) R=+37827 p = 0 FAIL !!!!!!!!
mod3n(5):(3,9-6) R=+47509 p = 0 FAIL !!!!!!!!
mod3n(5):(4,9-6) R=+48857 p = 0 FAIL !!!!!!!!
mod3n(5):(5,9-6) R=+64538 p = 0 FAIL !!!!!!!!
mod3n(5):(6,9-6) R=+52694 p = 0 FAIL !!!!!!!!
mod3n(5):(7,9-6) R=+31328 p = 0 FAIL !!!!!!!!
mod3n(5):(8,9-6) R=+24550 p = 5e-8384 FAIL !!!!!!!!
mod3n(5):(9,9-6) R=+16680 p = 1e-5696 FAIL !!!!!!!!
mod3n(5):(10,9-6) R=+10502 p = 3e-3587 FAIL !!!!!!!!
mod3n(5):(11,9-6) R= +5197 p = 1e-1775 FAIL !!!!!!!!
mod3n(5):(12,9-6) R= +2549 p = 2.1e-871 FAIL !!!!!!!
mod3n(5):(13,9-6) R= +1236 p = 6.9e-423 FAIL !!!!!!!
mod3n(5):(14,9-6) R=+584.4 p = 2.1e-200 FAIL !!!!!!
mod3n(5):(15,9-6) R=+263.8 p = 6.4e-91 FAIL !!!!!
TMFn(2+0):wl R>+99999 p~= 0 FAIL !!!!!!!!
TMFn(2+1):wl R=+72244 p~= 0 FAIL !!!!!!!!
TMFn(2+2):wl R=+36073 p~= 0 FAIL !!!!!!!!
TMFn(2+3):wl R=+17987 p~= 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+0,13-4,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+1,13-4,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+2,13-5,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+3,13-5,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+4,13-5,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+5,13-6,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+6,13-6,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+7,13-7,T) R=+69900 p = 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+8,13-8,T) R=+41294 p = 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+9,13-8,T) R=+20560 p = 6e-5219 FAIL !!!!!!!!
[Low1/8]BCFN(2+10,13-9,T) R=+11783 p = 1e-2648 FAIL !!!!!!!!
[Low1/8]BCFN(2+11,13-9,T) R= +5870 p = 4e-1320 FAIL !!!!!!!!
[Low1/8]DC6-9x1Bytes-1 R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]Gap-16:A R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]Gap-16:B R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]FPF-14+6/16:(0,14-0) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]FPF-14+6/16:(1,14-1) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]FPF-14+6/16:(2,14-2) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]FPF-14+6/16:(3,14-2) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]FPF-14+6/16:(4,14-3) R=+88309 p = 0 FAIL !!!!!!!!
[Low1/8]FPF-14+6/16:(5,14-4) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]FPF-14+6/16:(7,14-5) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]FPF-14+6/16:all R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]FPF-14+6/16:cross R>+99999 p = 0 FAIL !!!!!!!!
[Low1/8]BRank(12):128(4) R= +4955 p~= 2e-2636 FAIL !!!!!!!!
[Low1/8]BRank(12):256(2) R= +7523 p~= 1e-2265 FAIL !!!!!!!!
[Low1/8]BRank(12):384(1) R= +7989 p~= 7e-2406 FAIL !!!!!!!!
[Low1/8]BRank(12):512(2) R=+15377 p~= 5e-4630 FAIL !!!!!!!!
[Low1/8]BRank(12):768(1) R=+16341 p~= 3e-4920 FAIL !!!!!!!!
[Low1/8]BRank(12):1K(1) R=+21917 p~= 1e-6598 FAIL !!!!!!!!
[Low1/8]mod3n(5):(0,9-6) R=+35339 p = 0 FAIL !!!!!!!!
[Low1/8]mod3n(5):(1,9-6) R=+40584 p = 0 FAIL !!!!!!!!
[Low1/8]mod3n(5):(2,9-6) R=+56010 p = 0 FAIL !!!!!!!!
[Low1/8]mod3n(5):(3,9-6) R=+55194 p = 0 FAIL !!!!!!!!
[Low1/8]mod3n(5):(4,9-6) R=+32167 p = 0 FAIL !!!!!!!!
[Low1/8]mod3n(5):(5,9-6) R=+34369 p = 0 FAIL !!!!!!!!
[Low1/8]mod3n(5):(6,9-6) R=+21702 p = 9e-7412 FAIL !!!!!!!!
[Low1/8]mod3n(5):(7,9-6) R=+10792 p = 5e-3686 FAIL !!!!!!!!
[Low1/8]mod3n(5):(8,9-6) R= +5342 p = 6e-1825 FAIL !!!!!!!!
[Low1/8]mod3n(5):(9,9-6) R= +2622 p = 4.1e-896 FAIL !!!!!!!
[Low1/8]mod3n(5):(10,9-6) R= +1267 p = 1.7e-433 FAIL !!!!!!!
[Low1/8]mod3n(5):(11,9-6) R=+594.7 p = 6.2e-204 FAIL !!!!!!
[Low1/8]mod3n(5):(12,9-6) R=+263.8 p = 6.4e-91 FAIL !!!!!
[Low1/8]TMFn(2+0):wl R=+17987 p~= 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+0,13-4,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+1,13-4,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+2,13-5,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+3,13-5,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+4,13-5,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+5,13-6,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+6,13-6,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+7,13-7,T) R=+67430 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+8,13-8,T) R=+40257 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+9,13-8,T) R=+20194 p = 7e-5126 FAIL !!!!!!!!
[Low4/32]BCFN(2+10,13-9,T) R=+11634 p = 3e-2615 FAIL !!!!!!!!
[Low4/32]BCFN(2+11,13-9,T) R= +5817 p = 3e-1308 FAIL !!!!!!!!
[Low4/32]DC6-9x1Bytes-1 R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]Gap-16:A R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]Gap-16:B R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:(0,14-0) R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:(1,14-1) R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:(2,14-2) R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:(3,14-2) R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:(4,14-3) R=+88309 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:all R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:cross R>+99999 p = 0 FAIL !!!!!!!!
[Low4/32]BRank(12):128(4) R= +4955 p~= 2e-2636 FAIL !!!!!!!!
[Low4/32]BRank(12):256(2) R= +7523 p~= 1e-2265 FAIL !!!!!!!!
[Low4/32]BRank(12):384(1) R= +7989 p~= 7e-2406 FAIL !!!!!!!!
[Low4/32]BRank(12):512(2) R=+15377 p~= 5e-4630 FAIL !!!!!!!!
[Low4/32]BRank(12):768(1) R=+16341 p~= 3e-4920 FAIL !!!!!!!!
[Low4/32]BRank(12):1K(1) R=+21917 p~= 1e-6598 FAIL !!!!!!!!
[Low4/32]mod3n(5):(0,9-6) R=+63820 p = 0 FAIL !!!!!!!!
[Low4/32]mod3n(5):(1,9-6) R=+45790 p = 0 FAIL !!!!!!!!
[Low4/32]mod3n(5):(2,9-6) R=+59474 p = 0 FAIL !!!!!!!!
[Low4/32]mod3n(5):(3,9-6) R=+54080 p = 0 FAIL !!!!!!!!
[Low4/32]mod3n(5):(4,9-6) R=+36751 p = 0 FAIL !!!!!!!!
[Low4/32]mod3n(5):(5,9-6) R=+25215 p = 4e-8611 FAIL !!!!!!!!
[Low4/32]mod3n(5):(6,9-6) R=+17137 p = 8e-5853 FAIL !!!!!!!!
[Low4/32]mod3n(5):(7,9-6) R=+10792 p = 5e-3686 FAIL !!!!!!!!
[Low4/32]mod3n(5):(8,9-6) R= +5342 p = 6e-1825 FAIL !!!!!!!!
[Low4/32]mod3n(5):(9,9-6) R= +2622 p = 4.1e-896 FAIL !!!!!!!
[Low4/32]mod3n(5):(10,9-6) R= +1267 p = 1.7e-433 FAIL !!!!!!!
[Low4/32]mod3n(5):(11,9-6) R=+594.7 p = 6.2e-204 FAIL !!!!!!
[Low4/32]mod3n(5):(12,9-6) R=+263.8 p = 6.4e-91 FAIL !!!!!
[Low4/32]TMFn(2+0):wl R=+17987 p~= 0 FAIL !!!!!!!!
[Low1/32]BCFN(2+0,13-5,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]BCFN(2+1,13-5,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]BCFN(2+2,13-6,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]BCFN(2+3,13-6,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]BCFN(2+4,13-6,T) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]BCFN(2+5,13-7,T) R=+71158 p = 0 FAIL !!!!!!!!
[Low1/32]BCFN(2+6,13-8,T) R=+41820 p = 0 FAIL !!!!!!!!
[Low1/32]BCFN(2+7,13-8,T) R=+20745 p = 7e-5266 FAIL !!!!!!!!
[Low1/32]BCFN(2+8,13-9,T) R=+11858 p = 1e-2665 FAIL !!!!!!!!
[Low1/32]BCFN(2+9,13-9,T) R= +5896 p = 5e-1326 FAIL !!!!!!!!
[Low1/32]DC6-9x1Bytes-1 R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]Gap-16:A R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]Gap-16:B R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]FPF-14+6/16:(0,14-2) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]FPF-14+6/16:(1,14-2) R=+68083 p = 0 FAIL !!!!!!!!
[Low1/32]FPF-14+6/16:(2,14-3) R=+88309 p = 0 FAIL !!!!!!!!
[Low1/32]FPF-14+6/16:(5,14-5) R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]FPF-14+6/16:all R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]FPF-14+6/16:cross R>+99999 p = 0 FAIL !!!!!!!!
[Low1/32]BRank(12):128(2) R= +3687 p~= 7e-1111 FAIL !!!!!!!!
[Low1/32]BRank(12):256(2) R= +7614 p~= 4e-2293 FAIL !!!!!!!!
[Low1/32]BRank(12):384(1) R= +8118 p~= 9e-2445 FAIL !!!!!!!!
[Low1/32]BRank(12):512(1) R=+10895 p~= 1e-3280 FAIL !!!!!!!!
[Low1/32]mod3n(5):(0,9-6) R=+44055 p = 0 FAIL !!!!!!!!
[Low1/32]mod3n(5):(1,9-6) R=+35130 p = 0 FAIL !!!!!!!!
[Low1/32]mod3n(5):(2,9-6) R=+40004 p = 0 FAIL !!!!!!!!
[Low1/32]mod3n(5):(3,9-6) R=+27456 p = 2e-9376 FAIL !!!!!!!!
[Low1/32]mod3n(5):(4,9-6) R=+18673 p = 4e-6377 FAIL !!!!!!!!
[Low1/32]mod3n(5):(5,9-6) R=+11774 p = 1e-4021 FAIL !!!!!!!!
[Low1/32]mod3n(5):(6,9-6) R= +5838 p = 2e-1994 FAIL !!!!!!!!
[Low1/32]mod3n(5):(7,9-6) R= +2870 p = 7.3e-981 FAIL !!!!!!!
[Low1/32]mod3n(5):(8,9-6) R= +1391 p = 7.4e-476 FAIL !!!!!!!
[Low1/32]mod3n(5):(9,9-6) R=+656.8 p = 4.0e-225 FAIL !!!!!!
[Low1/32]mod3n(5):(10,9-6) R=+294.8 p = 1.6e-101 FAIL !!!!!
ERROR: IOError: write: broken pipe (EPIPE)
Stacktrace:
[1] uv_write(s::Base.PipeEndpoint, p::Ptr{UInt8}, n::UInt64)
This obviously implies that the recursive variant without reseeding must also fail.