The OpenD Programming Language

XoshiroEngine.jump

Jump functions are defined for certain UIntType, A, B combinations:

<table> <tr><td>UIntType</td><td>nbits</td><td>A</td><td>B</td><td>Num. calls skipped</td></tr> <tr><td>ulong</td><td>256</td><td>17</td><td>45</td><td>2^^128</td></tr> <tr><td>ulong</td><td>512</td><td>11</td><td>21</td><td>2^^256</td></tr> <tr><td>uint</td><td>128</td><td>9</td><td>11</td><td>2^^64</td></tr> </table>

These can be used to generate non-overlapping subsequences for parallel computations.

struct XoshiroEngine(UIntType, uint nbits, string scrambler, uint A, uint B, uint I, uint R, UIntType S, UIntType T)
@nogc nothrow pure @safe
static if(_hasJump)
void
jump
()
()
if (
(
is(UIntType == uint) ||
is(UIntType == ulong)
)
&&
"**" == scrambler
&&
(
UIntType.sizeof * 8 * 4 == nbits ||
UIntType.sizeof * 8 * 8 == nbits
)
)

Meta