Comment #0 by n8sh.secondary — 2018-01-30T03:45:55Z
seed(uint): There is no need for seedval to be non-zero. The assertion should be removed.
popFront(): rng_state is private and is only exposed through front() which never exposes the high 16 bits of rng_state. popFront() advances rng_state through addition and multiplication so the high 16 bits of the current rng_state never affect the low 48 bits of the next rng_state. So masking rng_state to clear the high 16 bits is unnecessary (unless comparing Rand48 structs for equality or computing bitwise hashcodes of their contents, which doesn't appear to happen anywhere).
Comment #1 by n8sh.secondary — 2018-01-30T03:49:39Z
Strike the comments about popFront(): the mask is necessary.
>popFront() advances rng_state through addition and multiplication so the high 16 bits of the current rng_state never affect the low 48 bits of the next rng_state
The "and addition" is why this statement is false.
Comment #2 by n8sh.secondary — 2018-01-30T03:52:22Z