[package]
name = "amari-enumerative"
version.workspace = true
authors.workspace = true
edition.workspace = true
license.workspace = true
description = "Enumerative geometry capabilities for the Amari library"
repository = "https://github.com/justinelliottcobb/Amari"
keywords = ["mathematics", "geometry", "enumerative", "intersection", "schubert"]
categories = ["mathematics", "science"]

[dependencies]
amari-core = { workspace = true }
num-rational = "0.4"
num-bigint = "0.4"
num-traits = { workspace = true }
thiserror = { workspace = true }
serde = { workspace = true, optional = true }
# Performance optimization dependencies
rayon = { version = "1.8", optional = true }
once_cell = "1.19"

# GPU acceleration dependencies
bytemuck = { version = "1.14", features = ["derive"], optional = true }
wgpu = { version = "0.19", optional = true }
pollster = { version = "0.3", optional = true }
futures = { version = "0.3", optional = true }
tokio = { version = "1.0", features = ["macros", "rt-multi-thread"], optional = true }

# WASM optimization dependencies
wasm-bindgen = { version = "0.2", optional = true }
js-sys = { version = "0.3", optional = true }
web-sys = { version = "0.3", optional = true }

[features]
default = ["std", "high-precision"]
std = []
serde = ["dep:serde", "num-rational/serde", "num-bigint/serde"]
high-precision = ["amari-core/high-precision"]
gpu = ["bytemuck", "wgpu", "pollster", "futures", "tokio"]
wasm = ["dep:wasm-bindgen", "dep:js-sys", "dep:web-sys"]
parallel = ["dep:rayon"]
performance = ["parallel"]
wasm-full = ["wasm", "gpu", "performance"]

[dev-dependencies]
proptest = "1.0"
criterion = "0.5"