Date
2024-11-28.21:40:31
Message id
14487

Content

Proposed resolution:

This wording is relative to N4988.

  1. Modify [rand.eng.philox], [tab:rand.eng.philox.f] as indicated (This effectively reduces 16 data columns to 4 data columns and 4 data rows to 2 data rows):

    Table 101 — Values for the word permutation fn(j) [tab:rand.eng.philox.f]
    fn(j) j
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    n
    2 0 1
    4 20 13 02 31
    8 2 1 4 7 6 5 0 3
    16 0 9 2 13 6 11 4 15 10 7 12 3 14 5 8 1
  2. Modify [rand.eng.philox] as indicated:

    -4- […]

    1. (4.1) — […]

    2. (4.2) — The following computations are applied to the elements of the V sequence:

      X2k+0 = mulhimullo(V2k+1,Mk,w) xor keykq xor V2k+1

      X2k+1 = mullomulhi(V2k+1,Mk,w) xor keykq xor V2k

    -5- […]

    -6- Mandates:

    1. (6.1) — […]

    2. (6.2) — n == 2 || n == 4 || n == 8 || n == 16 is true, and

    3. (6.3) — […]

    4. (6.4) — […]

  3. Modify [rand.predef] as indicated:

    using philox4x32 =
          philox_engine<uint_fast32_t, 32, 4, 10,
           0xCD9E8D570xD2511F53, 0x9E3779B9, 0xD2511F530xCD9E8D57, 0xBB67AE85>;
    

    -11- Required behavior: The 10000th consecutive invocation a default-constructed object of type philox4x32 produces the value 1955073260.

    using philox4x64 =
          philox_engine<uint_fast64_t, 64, 4, 10,
           0xCA5A8263951211570xD2E7470EE14C6C93, 0x9E3779B97F4A7C15, 0xD2E7470EE14C6C930xCA5A826395121157, 0xBB67AE8584CAA73B>;
    

    -12- Required behavior: The 10000th consecutive invocation a default-constructed object of type philox4x64 produces the value 3409172418970261260.