[package]
name = "quantrs2-sim"
version.workspace = true
authors.workspace = true
edition.workspace = true
rust-version.workspace = true
repository.workspace = true
license.workspace = true
keywords.workspace = true
categories.workspace = true
description = "Quantum circuit simulators for the QuantRS2 framework"

[dependencies]
quantrs2-core = { path = "../core", version = "0.1.0-alpha.3" }
quantrs2-circuit = { path = "../circuit", version = "0.1.0-alpha.3" }
num-complex.workspace = true
ndarray.workspace = true
rayon.workspace = true
thiserror.workspace = true
# Optional dependencies disabled by default to avoid OpenBLAS issues on macOS ARM
scirs2-core = { workspace = true, features = ["simd", "memory_management", "parallel", "linalg"], optional = true }
scirs2-optimize = { workspace = true, default-features = false, optional = true }
pandrs = { workspace = true, optional = true }
pyo3.workspace = true

# For GPU support (optional)
wgpu = { workspace = true, optional = true }
bytemuck = { workspace = true, features = ["derive"], optional = true }
tokio = { workspace = true, features = ["rt", "rt-multi-thread"], optional = true }
futures = { version = "0.3", optional = true }
rand.workspace = true
rand_chacha.workspace = true
wide.workspace = true
fastrand = "2.0.1"
nalgebra-sparse = "0.9"

[features]
default = ["optimize"]
gpu = ["dep:wgpu", "dep:bytemuck", "dep:tokio", "dep:futures"]
simd = []
optimize = ["simd"] # Enable optimized implementations
memory_efficient = [] # Enable memory-efficient algorithms for large state vectors
advanced_math = ["dep:scirs2-core", "dep:scirs2-optimize", "dep:pandrs"] # Enable advanced math using external libs
