[package]
edition = "2021"
rust-version = "1.91.1"
name = "basin"
version = "0.7.0"
authors = ["Johan Larsson <johan@jolars.co>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Numerical optimization in pure Rust, with pluggable linear-algebra backends and WASM support."
homepage = "https://basin.bz"
documentation = "https://docs.rs/basin"
readme = "README.md"
keywords = [
"optimization",
"math",
"numerics",
"solver",
"nonlinear",
]
categories = [
"mathematics",
"science",
"algorithms",
]
license = "MIT"
repository = "https://github.com/jolars/basin"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
default = ["problems"]
faer = [
"dep:faer",
"dep:generativity",
]
nalgebra = [
"dep:nalgebra",
"dep:nalgebra-sparse",
]
ndarray = ["dep:ndarray"]
ndarray-blas = [
"ndarray",
"ndarray/blas",
]
parallel = ["faer?/rayon"]
problems = []
[lib]
name = "basin"
path = "src/lib.rs"
[[example]]
name = "favicon"
path = "examples/favicon.rs"
[[example]]
name = "logo"
path = "examples/logo.rs"
[[example]]
name = "nelder_mead"
path = "examples/nelder_mead.rs"
[[example]]
name = "rosenbrock"
path = "examples/rosenbrock.rs"
[[test]]
name = "augmented_lagrangian_faer"
path = "tests/augmented_lagrangian_faer.rs"
[[test]]
name = "augmented_lagrangian_nalgebra"
path = "tests/augmented_lagrangian_nalgebra.rs"
[[test]]
name = "augmented_lagrangian_ndarray"
path = "tests/augmented_lagrangian_ndarray.rs"
[[test]]
name = "augmented_lagrangian_vec"
path = "tests/augmented_lagrangian_vec.rs"
[[test]]
name = "barrier_method_faer"
path = "tests/barrier_method_faer.rs"
[[test]]
name = "barrier_method_nalgebra"
path = "tests/barrier_method_nalgebra.rs"
[[test]]
name = "barrier_method_ndarray"
path = "tests/barrier_method_ndarray.rs"
[[test]]
name = "barrier_method_vec"
path = "tests/barrier_method_vec.rs"
[[test]]
name = "bfgs"
path = "tests/bfgs.rs"
[[test]]
name = "bfgs_faer"
path = "tests/bfgs_faer.rs"
[[test]]
name = "bfgs_vec"
path = "tests/bfgs_vec.rs"
[[test]]
name = "bounded_cma_es_faer"
path = "tests/bounded_cma_es_faer.rs"
[[test]]
name = "bounded_cma_es_nalgebra"
path = "tests/bounded_cma_es_nalgebra.rs"
[[test]]
name = "bounded_cma_es_ndarray"
path = "tests/bounded_cma_es_ndarray.rs"
[[test]]
name = "bounded_cma_es_vec"
path = "tests/bounded_cma_es_vec.rs"
[[test]]
name = "bounded_cma_inject_lbfgsb_nalgebra"
path = "tests/bounded_cma_inject_lbfgsb_nalgebra.rs"
[[test]]
name = "bounded_nelder_mead"
path = "tests/bounded_nelder_mead.rs"
[[test]]
name = "cma_es_faer"
path = "tests/cma_es_faer.rs"
[[test]]
name = "cma_es_nalgebra"
path = "tests/cma_es_nalgebra.rs"
[[test]]
name = "cma_es_ndarray"
path = "tests/cma_es_ndarray.rs"
[[test]]
name = "cma_es_vec"
path = "tests/cma_es_vec.rs"
[[test]]
name = "cma_inject_lm_nalgebra"
path = "tests/cma_inject_lm_nalgebra.rs"
[[test]]
name = "cma_inject_nalgebra"
path = "tests/cma_inject_nalgebra.rs"
[[test]]
name = "cma_inject_solver_failed_bubbles"
path = "tests/cma_inject_solver_failed_bubbles.rs"
[[test]]
name = "example_bounded_cma_inject_lm"
path = "tests/example_bounded_cma_inject_lm.rs"
[[test]]
name = "gauss_newton_faer"
path = "tests/gauss_newton_faer.rs"
[[test]]
name = "gauss_newton_faer_sparse"
path = "tests/gauss_newton_faer_sparse.rs"
[[test]]
name = "gauss_newton_nalgebra"
path = "tests/gauss_newton_nalgebra.rs"
[[test]]
name = "gauss_newton_nalgebra_sparse"
path = "tests/gauss_newton_nalgebra_sparse.rs"
[[test]]
name = "inner_executor"
path = "tests/inner_executor.rs"
[[test]]
name = "lbfgs_unbounded"
path = "tests/lbfgs_unbounded.rs"
[[test]]
name = "lbfgsb_faer"
path = "tests/lbfgsb_faer.rs"
[[test]]
name = "lbfgsb_iter_parity"
path = "tests/lbfgsb_iter_parity.rs"
[[test]]
name = "lbfgsb_nalgebra"
path = "tests/lbfgsb_nalgebra.rs"
[[test]]
name = "lbfgsb_ndarray"
path = "tests/lbfgsb_ndarray.rs"
[[test]]
name = "lbfgsb_vec"
path = "tests/lbfgsb_vec.rs"
[[test]]
name = "levenberg_marquardt_faer"
path = "tests/levenberg_marquardt_faer.rs"
[[test]]
name = "levenberg_marquardt_faer_sparse"
path = "tests/levenberg_marquardt_faer_sparse.rs"
[[test]]
name = "levenberg_marquardt_nalgebra"
path = "tests/levenberg_marquardt_nalgebra.rs"
[[test]]
name = "levenberg_marquardt_nalgebra_sparse"
path = "tests/levenberg_marquardt_nalgebra_sparse.rs"
[[test]]
name = "ma_ls_ch_cma_faer"
path = "tests/ma_ls_ch_cma_faer.rs"
[[test]]
name = "ma_ls_ch_cma_nalgebra"
path = "tests/ma_ls_ch_cma_nalgebra.rs"
[[test]]
name = "nelder_mead"
path = "tests/nelder_mead.rs"
[[test]]
name = "numdiff"
path = "tests/numdiff.rs"
[[test]]
name = "projected_gradient_descent_faer"
path = "tests/projected_gradient_descent_faer.rs"
[[test]]
name = "projected_gradient_descent_nalgebra"
path = "tests/projected_gradient_descent_nalgebra.rs"
[[test]]
name = "projected_gradient_descent_ndarray"
path = "tests/projected_gradient_descent_ndarray.rs"
[[test]]
name = "projected_gradient_descent_vec"
path = "tests/projected_gradient_descent_vec.rs"
[[test]]
name = "random_search_faer"
path = "tests/random_search_faer.rs"
[[test]]
name = "random_search_nalgebra"
path = "tests/random_search_nalgebra.rs"
[[test]]
name = "random_search_ndarray"
path = "tests/random_search_ndarray.rs"
[[test]]
name = "random_search_vec"
path = "tests/random_search_vec.rs"
[[test]]
name = "rosenbrock"
path = "tests/rosenbrock.rs"
[[test]]
name = "rosenbrock_faer"
path = "tests/rosenbrock_faer.rs"
[[test]]
name = "rosenbrock_nalgebra"
path = "tests/rosenbrock_nalgebra.rs"
[[test]]
name = "rosenbrock_ndarray"
path = "tests/rosenbrock_ndarray.rs"
[[test]]
name = "ssga"
path = "tests/ssga.rs"
[[test]]
name = "stepper"
path = "tests/stepper.rs"
[[test]]
name = "termination"
path = "tests/termination.rs"
[[test]]
name = "test"
path = "tests/test.rs"
[[test]]
name = "trf_faer"
path = "tests/trf_faer.rs"
[[test]]
name = "trf_faer_sparse"
path = "tests/trf_faer_sparse.rs"
[[test]]
name = "trf_nalgebra"
path = "tests/trf_nalgebra.rs"
[[test]]
name = "trf_nalgebra_sparse"
path = "tests/trf_nalgebra_sparse.rs"
[[bench]]
name = "lm_backends"
path = "benches/lm_backends.rs"
harness = false
required-features = [
"nalgebra",
"faer",
"problems",
]
[[bench]]
name = "rosenbrock"
path = "benches/rosenbrock.rs"
harness = false
[[bench]]
name = "solver_backends"
path = "benches/solver_backends.rs"
harness = false
required-features = [
"nalgebra",
"ndarray",
"faer",
"problems",
]
[dependencies.faer]
version = "0.24"
features = [
"std",
"linalg",
]
optional = true
default-features = false
[dependencies.generativity]
version = "1"
optional = true
[dependencies.nalgebra]
version = "0.34"
optional = true
[dependencies.nalgebra-sparse]
version = "0.11"
optional = true
[dependencies.ndarray]
version = "0.17"
optional = true
default-features = false
[dependencies.rand]
version = "0.10"
default-features = false
[dependencies.rand_chacha]
version = "0.10"
default-features = false
[dependencies.rand_distr]
version = "0.6"
default-features = false
[dependencies.web-time]
version = "1"
[dev-dependencies.criterion]
version = "0.8"
features = ["cargo_bench_support"]
default-features = false