[package]
name = "feanor-math"
version = "3.1.4"
edition = "2021"
authors = ["Simon Pohmann <simon@pohmann.de>"]

repository = "https://github.com/FeanorTheElf/feanor-math"
homepage = "https://github.com/FeanorTheElf/feanor-math"
keywords = ["math", "mathematics", "primes", "number-theory", "algebra"]
readme = "Readme.md"
description = "A library for number theory, providing implementations for arithmetic in various rings and algorithms working on them."
license = "MIT"

[badges]
maintenance = { status = "actively-developed" }

[lib]
crate-type = ["rlib"]
bench = true

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
oorandom = "11.1.3"
libc = "0.2"
stability = "0.2.0"
append-only-vec = "0.1.5"
thread_local = "1.1.8"
atomicbox = "0.4.0"
serde = { version = "1.0.207", features = ["derive"] }
serde_bytes = "0.11.15"
bytemuck = { version = "1.16.3" }
serde_assert = { version = "0.8.0", optional = true }
rayon = { version = "1.8.0", optional = true }
ndarray = { version = "0.15.6", optional = true }

[dev-dependencies]
feanor-mempool = "2.1.0"
serde_assert = "0.8.0"
serde_json = "1.0.125"

[features]
default = []

# Enables the export of "generic tests", functions that test the set of axioms associated with a trait.
generic_tests = ["dep:serde_assert"]

# Makes all unstable items visible to outside crates
unstable-enable = []

# Try to link to the mpir library for arbitrary-precision integers, and make `BigIntRing` refer to it.
mpir = []

# Enables parallel computation in some underlying algorithms. Currently this applies only to F4 and ECM.
parallel = ["dep:rayon"]

# Includes the matrix and tensor library ndarray, together with a (currently minimalistic) interface to matrices in this crate.
ndarray = ["dep:ndarray"]

# Uses macros to unroll all stages in the Strassen algorithm. Slightly improves performance at the cost of compilation time.
unrolled_strassen = []

[profile.profiling]
inherits = "bench"
debug = true
panic = "abort"

[package.metadata.docs.rs]
all-features = true