#![no_std]
#![feature(const_int_wrapping)]
#![feature(const_int_rotate)]
#![feature(const_int_ops)]
#![feature(const_fn)]
#![feature(const_let)]
#![allow(clippy::cast_lossless)]
#![allow(clippy::unreadable_literal)]
#![deny(clippy::float_arithmetic)]
#![forbid(missing_debug_implementations)]
#![warn(missing_docs)]
#[cfg(feature = "serde_support")]
extern crate serde;
#[cfg(feature = "serde_support")]
#[macro_use]
extern crate serde_derive;
pub(crate) use core::num::{NonZeroU128, NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU8};
pub mod lcg;
pub(crate) use self::lcg::*;
pub mod mcg;
pub use self::mcg::*;
pub mod pcg;
pub use self::pcg::*;
pub mod noncg;
#[cfg(target_arch = "x86")]
pub fn u64_from_rdtsc() -> u64 {
unsafe { core::arch::x86::_rdtsc() as u64 }
}
#[cfg(target_arch = "x86_64")]
pub fn u64_from_rdtsc() -> u64 {
unsafe { core::arch::x86_64::_rdtsc() as u64 }
}