[package]
name = "qmc"
version = "2.16.2"
authors = ["Sumner Hearth <sumnernh@gmail.com>"]
edition = "2018"
description = "Quantum Monte Carlo simulations in Rust"
documentation = "https://docs.rs/qmc/"
repository = "https://github.com/Renmusxd/IsingMonteCarlo"
license = "MIT"

[features]
default = []
# Calculate autocorrelation lengths for various functions of the sampled states.
autocorrelations = ["rustfft"]
# Enable nightly features in dependencies
nightly = ["smallvec/specialization", "smallvec/union"]
# Compile and export parallel-tempering code
tempering = ["itertools"]
# Add parallelization to parallel-tempering code
parallel-tempering = ["rayon", "tempering"]
# Add graph serialization.
serialize = ["serde", "rand/serde1", "smallvec/serde"]

[dependencies]
rand = "^0.8"
smallvec = "^1.6"
itertools = {version = "^0.10", optional = true}
rayon = {version = "^1.5", optional = true}
serde = {version = "^1.0", optional = true, features = ["derive"]}
rustfft = {version = "^5.0", optional = true}

[dev-dependencies]
rand = {version = "^0.8", features = ["small_rng"]}
serde_json = "^1.0"
rand_isaac = {version = "^0.3", features = ["serde1"]}
rand_chacha = {version = "^0.3"}

[profile.release]
lto = "fat"
codegen-units = 1
panic = "abort"