// vim:fileencoding=utf-8:foldmethod=marker #ifndef XORSHIFT_H #define XORSHIFT_H #include "../../common/aliases/aliases.h" #include "../../common/platform/platform.h" #ifdef WP_PLATFORM_CPP BEGIN_C_LINKAGE #endif // !WP_PLATFORM_CPP typedef struct WpXor256State WpXor256State; struct WpXor256State { u64 x; u64 y; u64 z; u64 w; }; WpXor256State wpPrngXorshiftInit(void); WpXor256State wpPrngXorshiftInitWithSeed(u64 seed); u64 wpPrngXorshift256(WpXor256State *state); u64 wpPrngXorshift256ss(WpXor256State *state); u64 wpPrngXorshift256p(WpXor256State *state); u64 wpPrngXorshift256InRange(WpXor256State *state, u64 start, u64 end); u64 wpPrngXorshift256ssInRange(WpXor256State *state, u64 start, u64 end); u64 wpPrngXorshift256pInRange(WpXor256State *state, u64 start, u64 end); u64 wpPrngXorshift256Choice(WpXor256State *state, u64 available_choices); u64 wpPrngXorshift256ssChoice(WpXor256State *state, u64 available_choices); u64 wpPrngXorshift256pChoice(WpXor256State *state, u64 available_choices); #ifdef WP_PLATFORM_CPP END_C_LINKAGE #endif // !WP_PLATFORM_CPP #endif // !XORSHIFT_H