pub use self::bernoulli::Bernoulli;
pub use self::beta::Beta;
pub use self::binomial::Binomial;
pub use self::categorical::Categorical;
pub use self::cauchy::Cauchy;
pub use self::chi::Chi;
pub use self::chi_squared::ChiSquared;
pub use self::dirichlet::Dirichlet;
pub use self::discrete_uniform::DiscreteUniform;
pub use self::erlang::Erlang;
pub use self::exponential::Exponential;
pub use self::fisher_snedecor::FisherSnedecor;
pub use self::gamma::Gamma;
pub use self::geometric::Geometric;
pub use self::hypergeometric::Hypergeometric;
pub use self::inverse_gamma::InverseGamma;
pub use self::log_normal::LogNormal;
pub use self::multinomial::Multinomial;
pub use self::normal::Normal;
pub use self::pareto::Pareto;
pub use self::poisson::Poisson;
pub use self::students_t::StudentsT;
pub use self::triangular::Triangular;
pub use self::uniform::Uniform;
pub use self::weibull::Weibull;
use statistics::{Max, Min};
mod bernoulli;
mod beta;
mod binomial;
mod categorical;
mod cauchy;
mod chi;
mod chi_squared;
mod dirichlet;
mod discrete_uniform;
mod erlang;
mod exponential;
mod fisher_snedecor;
mod gamma;
mod geometric;
mod hypergeometric;
mod internal;
mod inverse_gamma;
mod log_normal;
mod multinomial;
mod normal;
mod pareto;
mod poisson;
mod students_t;
mod triangular;
mod uniform;
mod weibull;
mod ziggurat;
mod ziggurat_tables;
use Result;
pub trait Univariate<T, K>: Min<T> + Max<T> {
fn cdf(&self, x: K) -> K;
}
pub trait InverseCDF<T> {
fn inverse_cdf(&self, x: T) -> T;
}
pub trait CheckedInverseCDF<T> {
fn checked_inverse_cdf(&self, x: T) -> Result<T>;
}
pub trait Continuous<T, K> {
fn pdf(&self, x: T) -> K;
fn ln_pdf(&self, x: T) -> K;
}
pub trait CheckedContinuous<T, K> {
fn checked_pdf(&self, x: T) -> Result<K>;
fn checked_ln_pdf(&self, x: T) -> Result<K>;
}
pub trait Discrete<T, K> {
fn pmf(&self, x: T) -> K;
fn ln_pmf(&self, x: T) -> K;
}
pub trait CheckedDiscrete<T, K> {
fn checked_pmf(&self, x: T) -> Result<K>;
fn checked_ln_pmf(&self, x: T) -> Result<K>;
}