probability_rs/lib.rs
1//! Probability distributions library with no external dependencies.
2//! Focus: numerical accuracy, clear API, and extensibility.
3//!
4//! Initial features:
5//! - Internal pseudo-random number generator (SplitMix64)
6//! - Generic trait `Continuous`
7//! - Distributions: Uniform, Normal, Exponential
8//! - Simple discrete distribution: Bernoulli
9//! - PDF, CDF, inverse CDF (quantile), mean and variance
10//! - Allocation-free sampling
11//!
12//! Quick examples:
13//! ```
14//! use probability_rs::{rng::SplitMix64, dist::normal::Normal, Continuous, Distribution};
15//! let normal = Normal::new(0.0, 1.0).unwrap();
16//! let mut rng = SplitMix64::seed_from_u64(123);
17//! let x = normal.sample(&mut rng);
18//! let p = normal.pdf(0.0);
19//! let c = normal.cdf(0.0);
20//! let q = normal.inv_cdf(0.975); // ~ 1.96
21//! assert!((p - 0.39894228).abs() < 1e-7);
22//! assert!((c - 0.5).abs() < 2e-6); // tolerance due to erf approximation
23//! assert!((q - 1.95996).abs() < 5e-3);
24//! ```
25
26pub mod dist;
27pub mod num;
28pub mod rng;
29
30// Re-export commonly used traits at crate root for ergonomic imports
31pub use dist::{Continuous, Discrete, Distribution, Moments};