#![no_std]
#[cfg(feature = "alloc")]
extern crate alloc;
#[cfg(feature = "std")]
extern crate std;
pub mod error;
#[cfg(feature = "int")]
mod limb;
#[cfg(feature = "int")]
pub mod int;
#[cfg(feature = "int")]
pub mod nat;
#[cfg(feature = "int")]
pub mod random;
#[cfg(feature = "int")]
mod ecm;
#[cfg(feature = "int")]
mod qsieve;
#[cfg(feature = "num-traits")]
mod num_traits_impls;
#[cfg(feature = "rational")]
pub mod rational;
#[cfg(feature = "rational")]
pub mod inf_rational;
#[cfg(feature = "int")]
pub mod mod_int;
#[cfg(feature = "dyadic")]
pub mod dyadic;
#[cfg(feature = "decimal")]
pub mod decimal;
#[cfg(feature = "complex")]
pub mod complex;
#[cfg(feature = "poly")]
pub mod poly;
#[cfg(feature = "matrix")]
pub mod matrix;
#[cfg(all(feature = "poly", feature = "rational"))]
mod poly_factor;
#[cfg(feature = "lattice")]
pub mod lattice;
#[cfg(feature = "algebraic")]
pub mod quadratic;
#[cfg(feature = "algebraic")]
pub mod algebraic;
#[cfg(feature = "float")]
pub mod float;
#[cfg(feature = "float")]
mod float_consts;
#[cfg(feature = "float")]
mod float_mp;
#[cfg(feature = "float")]
mod float_mp_consts;
#[cfg(feature = "float")]
pub mod fixed_float;
#[cfg(feature = "interval")]
pub mod interval;
#[cfg(feature = "ffi")]
pub mod ffi;
#[cfg(feature = "serde")]
mod serde_impls;
pub use error::{Error, Result};
#[cfg(feature = "int")]
pub use int::{Int, Sign};
#[cfg(feature = "int")]
pub use nat::{Nat, Reciprocal, u_gcd, u64_gcd};
#[cfg(feature = "int")]
pub use random::{RandomSource, SeedRng};
#[cfg(feature = "rational")]
pub use inf_rational::InfRational;
#[cfg(feature = "rational")]
pub use rational::Rational;
#[cfg(feature = "int")]
pub use mod_int::ModInt;
#[cfg(feature = "dyadic")]
pub use dyadic::Dyadic;
#[cfg(feature = "decimal")]
pub use decimal::{Decimal, Rounding};
#[cfg(feature = "complex")]
pub use complex::Complex;
#[cfg(feature = "poly")]
pub use poly::Poly;
#[cfg(feature = "matrix")]
pub use matrix::Matrix;
#[cfg(feature = "lattice")]
pub use lattice::{lll_reduce, lll_reduce_delta};
#[cfg(feature = "algebraic")]
pub use algebraic::Algebraic;
#[cfg(feature = "algebraic")]
pub use quadratic::Quadratic;
#[cfg(feature = "float")]
pub use fixed_float::FixedFloat;
#[cfg(feature = "float")]
pub use float::{Float, RoundingMode};
#[cfg(feature = "interval")]
pub use interval::Interval;
pub const VERSION: &str = env!("CARGO_PKG_VERSION");