Skip to main content

sim_lib_discrete_comb/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3//! Discrete combinatorics.
4//!
5//! This crate hosts exact counting functions (over `num_bigint::BigUint`), lazy
6//! enumerators, and canonical combinadic / Lehmer / mixed-radix rank-unrank
7//! helpers. These ordinals are the bridge to rank, but this crate never depends
8//! on `sim-lib-rank`.
9
10pub mod bit_vector;
11pub mod cards;
12pub mod combination;
13pub mod count;
14pub mod error;
15pub mod mixed_radix;
16pub mod partition;
17pub mod permutation;
18pub mod subset;
19
20pub use bit_vector::{BitVectorIter, bit_vector_rank, bit_vector_unrank, bit_vectors};
21pub use cards::{CardSpec, combinatorics_cards};
22pub use combination::{CombinationIter, combination_rank, combination_unrank, combinations};
23pub use count::{
24    MAX_BINOMIAL_INPUT, MAX_FACTORIAL_INPUT, MAX_PARTITION_INPUT, bell_number, binomial,
25    binomial_checked, factorial, factorial_checked, falling_factorial, integer_partition_count,
26    integer_partition_count_checked, multinomial, permutation_count, stirling2,
27};
28pub use error::CombError;
29pub use mixed_radix::{mixed_radix_rank, mixed_radix_unrank};
30pub use partition::{IntegerPartitionIter, integer_partitions};
31pub use permutation::{PermutationIter, permutation_rank, permutation_unrank, permutations};
32pub use subset::{SubsetIter, subset_rank, subset_unrank, subsets};