[package]
edition = "2024"
rust-version = "1.87.0"
name = "basin"
version = "0.12.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.rs"
documentation = "https://docs.rs/basin"
readme = "README.md"
keywords = [
"optimization",
"math",
"numerics",
"solver",
"nonlinear",
]
categories = [
"mathematics",
"science",
"algorithms",
]
license = "MIT OR Apache-2.0"
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",
"dep:faer-traits",
]
nalgebra = [
"dep:nalgebra",
"dep:nalgebra-sparse",
]
ndarray = ["dep:ndarray"]
ndarray-blas = [
"ndarray",
"ndarray/blas",
]
parallel = [
"dep:rayon",
"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 = "de"
path = "tests/de.rs"
[[test]]
name = "de_inject_lbfgsb_nalgebra"
path = "tests/de_inject_lbfgsb_nalgebra.rs"
[[test]]
name = "de_inject_nalgebra"
path = "tests/de_inject_nalgebra.rs"
[[test]]
name = "de_inject_solver_failed_bubbles"
path = "tests/de_inject_solver_failed_bubbles.rs"
[[test]]
name = "example_bounded_cma_inject_lm"
path = "tests/example_bounded_cma_inject_lm.rs"
[[test]]
name = "example_observer"
path = "tests/example_observer.rs"
[[test]]
name = "f32_round_trip"
path = "tests/f32_round_trip.rs"
[[test]]
name = "fused_problem"
path = "tests/fused_problem.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 = "observers"
path = "tests/observers.rs"
[[test]]
name = "population_parallel_reproducibility"
path = "tests/population_parallel_reproducibility.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"
[[test]]
name = "typed_error_hard_abort"
path = "tests/typed_error_hard_abort.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.faer-traits]
version = "0.24"
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.num-traits]
version = "0.2"
features = ["std"]
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.rayon]
version = "1"
optional = true
[dependencies.web-time]
version = "1"
[dev-dependencies.criterion]
version = "0.8"
features = ["cargo_bench_support"]
default-features = false