[package]
edition = "2021"
name = "ferrotherm"
version = "0.35.0"
build = false
exclude = [
"web/",
"target/",
"web-tests/",
"zig/.zig-cache/",
"zig/zig-out/",
"julia/Ferrotherm/Manifest.toml",
"docs/",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Thermodynamic computing in pure Rust: sparse energy-based models, chromatic block-Gibbs, parallel tempering, thermodynamic linear algebra, stochastic differentiable programs, a variational compiler onto device topologies, exact inference by variable elimination, planted instances with known optima, sampler certificates, and a first-class joules ledger. std-only, zero dependencies, wasm-clean, deterministic by seed."
homepage = "https://energy.physicalai-bmi.org/thermo"
documentation = "https://docs.rs/ferrotherm"
readme = "README.md"
keywords = [
"thermodynamic",
"ising",
"gibbs-sampling",
"energy-based-models",
"probabilistic",
]
categories = [
"science",
"algorithms",
"simulation",
"wasm",
"mathematics",
]
license = "Apache-2.0"
repository = "https://github.com/dcharlot-physicalai-bmi/ferrotherm"
[lib]
name = "ferrotherm"
crate-type = [
"rlib",
"cdylib",
]
path = "src/lib.rs"
[[example]]
name = "adaptive_ladder"
path = "examples/adaptive_ladder.rs"
[[example]]
name = "arm_width_vs_depth"
path = "examples/arm_width_vs_depth.rs"
[[example]]
name = "certify_probe"
path = "examples/certify_probe.rs"
[[example]]
name = "chain_strength"
path = "examples/chain_strength.rs"
[[example]]
name = "compile_chain"
path = "examples/compile_chain.rs"
[[example]]
name = "conform"
path = "examples/conform.rs"
[[example]]
name = "depth_vs_dimension"
path = "examples/depth_vs_dimension.rs"
[[example]]
name = "dtm_scale"
path = "examples/dtm_scale.rs"
[[example]]
name = "encoding_probe"
path = "examples/encoding_probe.rs"
[[example]]
name = "exact_bracket"
path = "examples/exact_bracket.rs"
[[example]]
name = "exact_reach"
path = "examples/exact_reach.rs"
[[example]]
name = "flips_bench"
path = "examples/flips_bench.rs"
[[example]]
name = "gibbs_grad"
path = "examples/gibbs_grad.rs"
[[example]]
name = "grad_check"
path = "examples/grad_check.rs"
[[example]]
name = "gset_gap"
path = "examples/gset_gap.rs"
[[example]]
name = "hfs_reach"
path = "examples/hfs_reach.rs"
[[example]]
name = "hubo_vs_reduction"
path = "examples/hubo_vs_reduction.rs"
[[example]]
name = "icm_scaling"
path = "examples/icm_scaling.rs"
[[example]]
name = "interval_calibration"
path = "examples/interval_calibration.rs"
[[example]]
name = "lqr_energy"
path = "examples/lqr_energy.rs"
[[example]]
name = "maxcut_shootout"
path = "examples/maxcut_shootout.rs"
[[example]]
name = "metric_calibration"
path = "examples/metric_calibration.rs"
[[example]]
name = "mixing_expressivity"
path = "examples/mixing_expressivity.rs"
[[example]]
name = "mppi_probe"
path = "examples/mppi_probe.rs"
[[example]]
name = "onsager"
path = "examples/onsager.rs"
[[example]]
name = "par_scaling"
path = "examples/par_scaling.rs"
[[example]]
name = "parity_bench"
path = "examples/parity_bench.rs"
[[example]]
name = "planar_exact"
path = "examples/planar_exact.rs"
[[example]]
name = "planted_probe"
path = "examples/planted_probe.rs"
[[example]]
name = "reach_on_z1"
path = "examples/reach_on_z1.rs"
[[example]]
name = "ring_tv"
path = "examples/ring_tv.rs"
[[example]]
name = "sdp_in_tree"
path = "examples/sdp_in_tree.rs"
[[example]]
name = "sequential_depth"
path = "examples/sequential_depth.rs"
[[example]]
name = "toroidal_bound"
path = "examples/toroidal_bound.rs"
[[example]]
name = "trained_tradeoff"
path = "examples/trained_tradeoff.rs"
[[example]]
name = "width_probe"
path = "examples/width_probe.rs"
[[example]]
name = "z1_ledger"
path = "examples/z1_ledger.rs"
[[test]]
name = "browser_ftp"
path = "tests/browser_ftp.rs"
[[test]]
name = "fuzz_parsers"
path = "tests/fuzz_parsers.rs"
[[test]]
name = "ommx_reference"
path = "tests/ommx_reference.rs"
[[test]]
name = "spec_conformance"
path = "tests/spec_conformance.rs"
[dependencies]
[lints.clippy]
needless_range_loop = "allow"
neg_cmp_op_on_partial_ord = "allow"
too_many_arguments = "allow"
[profile.release]
opt-level = 3
lto = true