[package]
edition = "2024"
rust-version = "1.88"
name = "puremp"
version = "0.2.4"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A pure-Rust arbitrary-precision arithmetic library — integers, rationals and MPFR-class floats — with a dependency-free clean-room core (optional serde/rand bridges), plus a C ABI and a CLI."
readme = "README.md"
keywords = [
"bignum",
"bigint",
"arbitrary-precision",
"rational",
"no-std",
]
categories = [
"mathematics",
"no-std",
"algorithms",
]
license = "MIT"
repository = "https://github.com/KarpelesLab/puremp"
[features]
algebraic = [
"rational",
"poly",
"matrix",
"float",
]
alloc = []
ball = ["interval"]
cli = [
"std",
"rational",
]
complex = ["int"]
decimal = ["int"]
default = [
"std",
"rational",
"float",
"dyadic",
"padic",
"decimal",
"complex",
"poly",
"interval",
"ball",
"matrix",
"lattice",
"identify",
"algebraic",
"primality",
"galois",
"elliptic",
"cli",
]
dlog = ["int"]
dyadic = ["int"]
elliptic = ["rational"]
ffi = [
"std",
"rational",
"float",
]
float = [
"int",
"rational",
]
galois = ["int"]
identify = [
"lattice",
"float",
]
int = ["alloc"]
interval = ["float"]
lattice = ["rational"]
matrix = ["alloc"]
num-traits = [
"dep:num-traits",
"int",
"rational",
]
padic = ["rational"]
poly = ["alloc"]
primality = ["int"]
rand = [
"dep:rand_core",
"int",
]
rational = ["int"]
serde = [
"dep:serde",
"int",
]
std = ["alloc"]
[lib]
name = "puremp"
path = "src/lib.rs"
[[bin]]
name = "puremp"
path = "src/bin/puremp/main.rs"
required-features = ["cli"]
[[example]]
name = "alg_bench"
path = "examples/alg_bench.rs"
required-features = [
"std",
"algebraic",
]
[[example]]
name = "bench"
path = "examples/bench.rs"
required-features = [
"std",
"float",
]
[[example]]
name = "factorial_bench"
path = "examples/factorial_bench.rs"
required-features = [
"std",
"int",
]
[[example]]
name = "galois_bench"
path = "examples/galois_bench.rs"
required-features = [
"std",
"poly",
"galois",
]
[[example]]
name = "gf_kronecker_bench"
path = "examples/gf_kronecker_bench.rs"
[[example]]
name = "poly_bench"
path = "examples/poly_bench.rs"
required-features = [
"std",
"poly",
"galois",
]
[[example]]
name = "rational_e2e_bench"
path = "examples/rational_e2e_bench.rs"
required-features = [
"std",
"rational",
"matrix",
]
[[example]]
name = "rational_xreduce_bench"
path = "examples/rational_xreduce_bench.rs"
required-features = [
"std",
"rational",
]
[[example]]
name = "strassen_bench"
path = "examples/strassen_bench.rs"
required-features = [
"std",
"matrix",
"rational",
]
[[example]]
name = "trig_bench"
path = "examples/trig_bench.rs"
required-features = [
"std",
"float",
]
[[test]]
name = "algebraic"
path = "tests/algebraic.rs"
[[test]]
name = "algebraic_from_float"
path = "tests/algebraic_from_float.rs"
[[test]]
name = "ball"
path = "tests/ball.rs"
[[test]]
name = "ball_solve"
path = "tests/ball_solve.rs"
[[test]]
name = "complex"
path = "tests/complex.rs"
[[test]]
name = "complex_float"
path = "tests/complex_float.rs"
[[test]]
name = "complex_trig"
path = "tests/complex_trig.rs"
[[test]]
name = "constants"
path = "tests/constants.rs"
[[test]]
name = "decimal"
path = "tests/decimal.rs"
[[test]]
name = "dlog"
path = "tests/dlog.rs"
[[test]]
name = "dyadic"
path = "tests/dyadic.rs"
[[test]]
name = "eigenvalues"
path = "tests/eigenvalues.rs"
[[test]]
name = "elliptic"
path = "tests/elliptic.rs"
[[test]]
name = "field_matrix"
path = "tests/field_matrix.rs"
[[test]]
name = "finite_field_factor"
path = "tests/finite_field_factor.rs"
[[test]]
name = "fixed_float"
path = "tests/fixed_float.rs"
[[test]]
name = "float"
path = "tests/float.rs"
[[test]]
name = "float_gamma_bessel"
path = "tests/float_gamma_bessel.rs"
[[test]]
name = "float_mp"
path = "tests/float_mp.rs"
[[test]]
name = "float_special"
path = "tests/float_special.rs"
[[test]]
name = "float_special2"
path = "tests/float_special2.rs"
[[test]]
name = "galois"
path = "tests/galois.rs"
[[test]]
name = "generic_ring"
path = "tests/generic_ring.rs"
[[test]]
name = "identify"
path = "tests/identify.rs"
[[test]]
name = "inf_rational"
path = "tests/inf_rational.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "interval"
path = "tests/interval.rs"
[[test]]
name = "lattice"
path = "tests/lattice.rs"
[[test]]
name = "matrix"
path = "tests/matrix.rs"
[[test]]
name = "mod_int"
path = "tests/mod_int.rs"
[[test]]
name = "num_traits"
path = "tests/num_traits.rs"
[[test]]
name = "p2_rounding"
path = "tests/p2_rounding.rs"
[[test]]
name = "padic"
path = "tests/padic.rs"
[[test]]
name = "poly"
path = "tests/poly.rs"
[[test]]
name = "poly_factor"
path = "tests/poly_factor.rs"
[[test]]
name = "poly_fast"
path = "tests/poly_fast.rs"
[[test]]
name = "primality"
path = "tests/primality.rs"
[[test]]
name = "property"
path = "tests/property.rs"
[[test]]
name = "pslq"
path = "tests/pslq.rs"
[[test]]
name = "quadratic"
path = "tests/quadratic.rs"
[[test]]
name = "ring_det"
path = "tests/ring_det.rs"
[[test]]
name = "serde"
path = "tests/serde.rs"
[[test]]
name = "serde_extended"
path = "tests/serde_extended.rs"
[[test]]
name = "subresultant"
path = "tests/subresultant.rs"
[dependencies.num-traits]
version = "0.2"
optional = true
default-features = false
[dependencies.rand_core]
version = "0.6"
optional = true
default-features = false
[dependencies.serde]
version = "1"
features = ["alloc"]
optional = true
default-features = false
[dev-dependencies.serde_json]
version = "1"
[lints.rust]
missing_docs = "warn"
unreachable_pub = "warn"
unsafe_code = "deny"
[profile.release]
lto = "thin"