[package]
name = "scirs2-integrate"
version.workspace = true
edition.workspace = true
authors.workspace = true
description = "Numerical integration module for SciRS2 (scirs2-integrate)"
readme = "README.md"
license.workspace = true
repository.workspace = true
keywords = ["integration", "quadrature", "scientific", "scipy", "numerical"]
categories = ["science", "mathematics", "algorithms"]

[lints]
workspace = true
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]


[dependencies]
# Core dependencies - ALL numeric/array/random functionality from scirs2-core (SciRS2 POLICY)
scirs2-core = { workspace = true, features = ["random", "array"] }
# Temporarily removed for publishing
# scirs2-linalg = { workspace = true }
scirs2-fft = { workspace = true }
thiserror = { workspace = true }
libc = { workspace = true }
libm = { workspace = true }
sobol = { workspace = true }
halton = { workspace = true }
num_cpus = { workspace = true }
half = { workspace = true }

# Optional dependencies
scirs2-autograd = { workspace = true, optional = true }

[dev-dependencies]
approx = { workspace = true }
criterion = { workspace = true }
plotters = { workspace = true }

[[bench]]
name = "integrator_bench"
harness = false

[[bench]]
name = "scipy_comparison"
harness = false

[[bench]]
name = "finance_pricing_bench"
harness = false

[features]
default = []
simd = ["scirs2-core/simd"]
parallel = ["scirs2-core/parallel"]
autodiff = ["scirs2-autograd"]
symplectic = []  # Feature flag for symplectic integrators
parallel_jacobian = ["scirs2-core/parallel"]  # Feature flag for parallel Jacobian computation
new_ode = []  # Feature flag for new ODE module structure