PCG Random Number Generation, Fortran Edition
This is a PCG implemented in Fortran 2008.
(C is used for testing only.)
This library is based on PCG implemented in C .
The iso_fortran_env intrinsic MODULE does not have support for int128,
so this library does not implement PCGs requiring int128.
state
result
mcg
oneseq
setseq
unique
int16
int8
✓
✓
✓
✓
int32
int16
✓
✓
✓
✓
int64
int32
✓
✓
✓
✓
int128
int64
✗
✗
✗
✗
Output function : RXS M XS
state
result
mcg
oneseq
setseq
unique
int8
int8
✗
✓
✓
✓
int16
int16
✗
✓
✓
✓
int32
int32
✗
✓
✓
✓
int64
int64
✗
✓
✓
✓
int128
int128
✗
✗
✗
✗
state
result
mcg
oneseq
setseq
unique
int16
int8
✓
✓
✓
✓
int32
int16
✓
✓
✓
✓
int64
int32
✓
✓
✓
✓
int128
int64
✗
✗
✗
✗
state
result
mcg
oneseq
setseq
unique
int16
int8
✓
✓
✓
✓
int32
int16
✓
✓
✓
✓
int64
int32
✓
✓
✓
✓
int128
int64
✗
✗
✗
✗
state
result
mcg
oneseq
setseq
unique
int64
int32
✓
✓
✓
✓
int128
int64
✗
✗
✗
✗
Output function : XSL RR RR
state
result
mcg
oneseq
setseq
unique
int64
int64
✗
✓
✓
✓
int128
int128
✗
✗
✗
✗
In order to validate the implementation of this module,
we do a comparison with the original C implementation .