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 |
✗ | ✗ | ✗ | ✗ |
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 |
✗ | ✗ | ✗ | ✗ |
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.