#[allow(warnings)]
pub mod bindings;
pub mod distribution;
pub mod error;
pub mod generator;
pub mod utils;
pub use distribution::{Discrete, LogNormal, Normal, Poisson, Uniform};
pub use error::{Error, Result};
pub use generator::{Generator, PseudoRng, QuasiRng};
pub mod rng_type {
use super::bindings::{self, rocrand_rng_type};
pub const PSEUDO_DEFAULT: rocrand_rng_type =
bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_DEFAULT;
pub const XORWOW: rocrand_rng_type = bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_XORWOW;
pub const MRG32K3A: rocrand_rng_type = bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_MRG32K3A;
pub const MTGP32: rocrand_rng_type = bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_MTGP32;
pub const PHILOX4_32_10: rocrand_rng_type =
bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_PHILOX4_32_10;
pub const MRG31K3P: rocrand_rng_type = bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_MRG31K3P;
pub const LFSR113: rocrand_rng_type = bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_LFSR113;
pub const MT19937: rocrand_rng_type = bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_MT19937;
pub const THREEFRY2_32_20: rocrand_rng_type =
bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_THREEFRY2_32_20;
pub const THREEFRY2_64_20: rocrand_rng_type =
bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_THREEFRY2_64_20;
pub const THREEFRY4_32_20: rocrand_rng_type =
bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_THREEFRY4_32_20;
pub const THREEFRY4_64_20: rocrand_rng_type =
bindings::rocrand_rng_type_ROCRAND_RNG_PSEUDO_THREEFRY4_64_20;
pub const QUASI_DEFAULT: rocrand_rng_type =
bindings::rocrand_rng_type_ROCRAND_RNG_QUASI_DEFAULT;
pub const SOBOL32: rocrand_rng_type = bindings::rocrand_rng_type_ROCRAND_RNG_QUASI_SOBOL32;
pub const SCRAMBLED_SOBOL32: rocrand_rng_type =
bindings::rocrand_rng_type_ROCRAND_RNG_QUASI_SCRAMBLED_SOBOL32;
pub const SOBOL64: rocrand_rng_type = bindings::rocrand_rng_type_ROCRAND_RNG_QUASI_SOBOL64;
pub const SCRAMBLED_SOBOL64: rocrand_rng_type =
bindings::rocrand_rng_type_ROCRAND_RNG_QUASI_SCRAMBLED_SOBOL64;
}
pub mod ordering {
use super::bindings::{self, rocrand_ordering};
pub const PSEUDO_BEST: rocrand_ordering =
bindings::rocrand_ordering_ROCRAND_ORDERING_PSEUDO_BEST;
pub const PSEUDO_DEFAULT: rocrand_ordering =
bindings::rocrand_ordering_ROCRAND_ORDERING_PSEUDO_DEFAULT;
pub const PSEUDO_SEEDED: rocrand_ordering =
bindings::rocrand_ordering_ROCRAND_ORDERING_PSEUDO_SEEDED;
pub const PSEUDO_LEGACY: rocrand_ordering =
bindings::rocrand_ordering_ROCRAND_ORDERING_PSEUDO_LEGACY;
pub const PSEUDO_DYNAMIC: rocrand_ordering =
bindings::rocrand_ordering_ROCRAND_ORDERING_PSEUDO_DYNAMIC;
pub const QUASI_DEFAULT: rocrand_ordering =
bindings::rocrand_ordering_ROCRAND_ORDERING_QUASI_DEFAULT;
}
pub mod direction_vector_set {
use super::bindings::{self, rocrand_direction_vector_set};
pub const VECTORS_32_JOEKUO6: rocrand_direction_vector_set =
bindings::rocrand_direction_vector_set_ROCRAND_DIRECTION_VECTORS_32_JOEKUO6;
pub const SCRAMBLED_VECTORS_32_JOEKUO6: rocrand_direction_vector_set =
bindings::rocrand_direction_vector_set_ROCRAND_SCRAMBLED_DIRECTION_VECTORS_32_JOEKUO6;
pub const VECTORS_64_JOEKUO6: rocrand_direction_vector_set =
bindings::rocrand_direction_vector_set_ROCRAND_DIRECTION_VECTORS_64_JOEKUO6;
pub const SCRAMBLED_VECTORS_64_JOEKUO6: rocrand_direction_vector_set =
bindings::rocrand_direction_vector_set_ROCRAND_SCRAMBLED_DIRECTION_VECTORS_64_JOEKUO6;
}
pub fn default_generator() -> Result<PseudoRng> {
PseudoRng::new(rng_type::PSEUDO_DEFAULT)
}
pub fn xorwow_generator() -> Result<PseudoRng> {
PseudoRng::new(rng_type::XORWOW)
}
pub fn sobol32_generator(dimensions: u32) -> Result<QuasiRng> {
let mut rng = QuasiRng::new(rng_type::SOBOL32)?;
rng.set_dimensions(dimensions)?;
Ok(rng)
}
pub fn get_version() -> Result<i32> {
<PseudoRng as Generator>::get_version()
}