common/xoroshiro128_plus.h
/* This is the long-jump function for the generator. It is equivalent to
     2^96 calls to next(); it can be used to generate 2^32 starting points,
     from each of which jump() will generate 2^32 non-overlapping
     subsequences for parallel distributed computations. */
This is the long-jump function for the generator. It is equivalent to
2^96 calls to next(); it can be used to generate 2^32 starting points,
from each of which jump() will generate 2^32 non-overlapping
subsequences for parallel distributed computations.
This is the long - jump function for the generator . It is equivalent to 2^96 calls to next () ; it can be used to generate 2^32 starting points from each of which jump () will generate 2^32 non - overlapping subsequences for parallel distributed computations .
void long_jump() {
    static const uint64_t LONG_JUMP[] = {0xd2a98b26625eee7b,
                                         0xdddf9b1090aa7ac1};
    uint64_t s0 = 0;
    uint64_t s1 = 0;
    for (uint64_t i = 0; i < sizeof LONG_JUMP / sizeof *LONG_JUMP; i++)
      for (int b = 0; b < 64; b++) {
        if (LONG_JUMP[i] & UINT64_C(1) << b) {
          s0 ^= s[0];
          s1 ^= s[1];
        }
        next();
      }
    s[0] = s0;
    s[1] = s1;
  }
void long_jump ( ) { static const uint64_t LONG_JUMP [ ] = { 0xd2a98b26625eee7b , 0xdddf9b1090aa7ac1 } ; uint64_t s0 = 0 ; uint64_t s1 = 0 ; for ( uint64_t i = 0 ; i < sizeof LONG_JUMP / sizeof * LONG_JUMP ; i ++ ) for ( int b = 0 ; b < 64 ; b ++ ) { if ( LONG_JUMP [ i ] & UINT64_C ( 1 ) << b ) { s0 ^= s [ 0 ] ; s1 ^= s [ 1 ] ; } next ( ) ; } s [ 0 ] = s0 ; s [ 1 ] = s1 ; }
This is the long-jump function for the generator.
This is the long - jump function for the generator .