[package]
name = "scirs2-special"
version.workspace = true
edition.workspace = true
authors.workspace = true
description = "Special functions module for SciRS2 (scirs2-special)"
readme = "README.md"
license.workspace = true
repository.workspace = true
keywords = ["special-functions", "gamma", "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 = ["validation", "simd", "array", "random"] }
thiserror = { workspace = true }
approx = { workspace = true }
lazy_static = { workspace = true }
regex = { workspace = true, optional = true }
plotters = { workspace = true, optional = true }
serde = { workspace = true, features = ["derive"] }
log = { workspace = true }
statrs = { workspace = true }

[features]
default = ["python-interop"]
parallel = ["scirs2-core/parallel"]
simd = ["scirs2-core/simd"]
lazy = ["futures"]
gpu = ["scirs2-core/gpu"]  # GPU accessed through core
# array-api = ["arrayfire", "candle"]  # Disabled - placeholder for future implementation
high-precision = ["rug"]               # Arbitrary precision computations
python-interop = ["regex"]             # Python interoperability features
plotting = ["plotters"]                # Visualization and plotting support
interactive = []                       # Interactive visualization (future feature)
fast-compile = []                      # Enable fast compilation mode for development

# Optional dependencies for advanced features
[dependencies.futures]
workspace = true
optional = true

# GPU and parallel dependencies removed - using core abstractions
# [dependencies.wgpu]
# version = "0.20"
# optional = true
#
# [dependencies.bytemuck]
# version = "1.14"
# features = ["derive"]
# optional = true
#
# [dependencies.rayon]
# version = "1.10"
# optional = true

# Note: These are placeholder features - actual implementations would use appropriate crates
# [dependencies.arrayfire]
# version = "3.8"
# optional = true

# [dependencies.candle]
# version = "0.6"
# optional = true

[dependencies.rug]
workspace = true
optional = true

[dev-dependencies]
criterion = { workspace = true }
tokio = { workspace = true, features = ["full"] }
quickcheck = { workspace = true }
quickcheck_macros = { workspace = true }
chrono = { workspace = true }
serde_json = { workspace = true }
