#![no_std]
#![deny(missing_docs)]
#[cfg(feature = "alloc")]
extern crate alloc;
#[cfg(feature = "std")]
extern crate std;
#[cfg(all(feature = "nonlinear-easy", not(feature = "std")))]
compile_error!("the `nonlinear-easy` safe API requires the `std` feature");
#[cfg(all(feature = "nonlinear-expert", not(feature = "std")))]
compile_error!("the `nonlinear-expert` safe API requires the `std` feature");
#[cfg(all(feature = "least-squares-nonlinear-easy", not(feature = "std")))]
compile_error!("the `least-squares-nonlinear-easy` safe API requires the `std` feature");
#[cfg(all(feature = "least-squares-nonlinear-expert", not(feature = "std")))]
compile_error!("the `least-squares-nonlinear-expert` safe API requires the `std` feature");
#[cfg(all(feature = "ode-sdrive-expert", not(feature = "std")))]
compile_error!("the `ode-sdrive-expert` safe API requires the `std` feature");
#[cfg(all(feature = "dassl", not(feature = "std")))]
compile_error!("the `dassl` safe API requires the `std` feature");
#[cfg(all(
feature = "optimization-linear-programming-in-memory",
not(feature = "std")
))]
compile_error!(
"the `optimization-linear-programming-in-memory` safe API requires the `std` feature"
);
#[cfg(all(feature = "fftpack-real", not(feature = "std")))]
compile_error!("the `fftpack-real` safe API requires the `std` feature");
#[cfg(all(feature = "fftpack-complex", not(feature = "std")))]
compile_error!("the `fftpack-complex` safe API requires the `std` feature");
#[cfg(all(feature = "fishpack-cartesian-2d", not(feature = "std")))]
compile_error!("the `fishpack-cartesian-2d` safe API requires the `std` feature");
#[cfg(all(feature = "fishpack-pois3d", not(feature = "std")))]
compile_error!("the `fishpack-pois3d` safe API requires the `std` feature");
#[cfg(all(feature = "fishpack-cylindrical-polar", not(feature = "std")))]
compile_error!("the `fishpack-cylindrical-polar` safe API requires the `std` feature");
#[cfg(all(feature = "fishpack-spherical", not(feature = "std")))]
compile_error!("the `fishpack-spherical` safe API requires the `std` feature");
#[cfg(all(feature = "pchip", not(feature = "std")))]
compile_error!("the `pchip` safe API requires the `std` feature");
#[cfg(all(feature = "bspline", not(feature = "std")))]
compile_error!("the `bspline` safe API requires the `std` feature");
#[cfg(all(feature = "piecewise-polynomial", not(feature = "std")))]
compile_error!("the `piecewise-polynomial` safe API requires the `std` feature");
#[cfg(all(feature = "tabulated-data", not(feature = "std")))]
compile_error!("the `tabulated-data` safe API requires the `std` feature");
#[cfg(all(feature = "least-squares-covariance", not(feature = "std")))]
compile_error!("the `least-squares-covariance` safe API requires the `std` feature");
#[cfg(all(feature = "least-squares-linear-nonnegative", not(feature = "std")))]
compile_error!("the `least-squares-linear-nonnegative` safe API requires the `std` feature");
#[cfg(all(feature = "least-squares-linear-bounded", not(feature = "std")))]
compile_error!("the `least-squares-linear-bounded` safe API requires the `std` feature");
#[cfg(all(feature = "least-squares-linear-constrained", not(feature = "std")))]
compile_error!("the `least-squares-linear-constrained` safe API requires the `std` feature");
#[cfg(all(
feature = "least-squares-linear-bounded-constrained",
not(feature = "std")
))]
compile_error!(
"the `least-squares-linear-bounded-constrained` safe API requires the `std` feature"
);
#[used]
static SLATEC_IMPLEMENTATION_PROVIDER: fn() = slatec_src::ensure_linked;
#[cfg(any(
feature = "blas-level1",
feature = "blas-level2",
feature = "blas-level3"
))]
mod blas;
pub mod special;
#[cfg(feature = "special-polynomials")]
pub mod polynomials;
#[cfg(any(
feature = "special-elementary",
feature = "special-gamma",
feature = "special-beta",
feature = "special-error",
feature = "special-airy",
feature = "special-bessel",
feature = "special-integrals",
feature = "special-scalar-expanded",
feature = "quadrature-basic",
feature = "quadrature-breakpoints",
feature = "quadrature-weighted",
feature = "quadrature-oscillatory",
feature = "quadrature-fourier",
feature = "quadrature-nonadaptive",
feature = "quadrature-piecewise-polynomial",
feature = "roots-scalar",
feature = "roots-polynomial",
feature = "approximation-polynomial-fitting",
feature = "nonlinear-easy",
feature = "nonlinear-expert",
feature = "nonlinear-systems",
feature = "least-squares-nonlinear-easy",
feature = "least-squares-nonlinear-expert",
feature = "least-squares-covariance",
feature = "ode-sdrive-expert",
feature = "least-squares-linear-nonnegative",
feature = "least-squares-linear-bounded",
feature = "least-squares-linear-constrained",
feature = "least-squares-linear-bounded-constrained",
feature = "ode-sdrive-expert",
feature = "dassl",
feature = "optimization-linear-programming-in-memory",
feature = "fftpack-real",
feature = "fftpack-complex",
feature = "fishpack-cartesian-2d",
feature = "fishpack-pois3d",
feature = "fishpack-cylindrical-polar",
feature = "fishpack-spherical",
feature = "banded-linear-systems",
feature = "pchip",
feature = "bspline",
feature = "piecewise-polynomial",
feature = "tabulated-data"
))]
pub(crate) mod runtime;
#[cfg(feature = "fftpack-real")]
pub mod fftpack;
#[cfg(feature = "pchip")]
pub mod pchip;
#[cfg(feature = "bspline")]
mod bspline;
#[cfg(feature = "dassl")]
pub mod dassl;
#[cfg(feature = "native-lock-test-support")]
#[doc(hidden)]
pub mod native_lock_test_support {
pub fn with_native_lock<T>(operation: impl FnOnce() -> T) -> T {
let _native = crate::runtime::lock_native();
operation()
}
}
#[cfg(any(
feature = "native-serialization-tests",
feature = "fishpack-cartesian-2d-native-tests",
feature = "fishpack-pois3d-native-tests",
feature = "fishpack-cylindrical-polar-native-tests",
feature = "fishpack-spherical-native-tests"
))]
#[doc(hidden)]
pub mod native_serialization_test_support {
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Snapshot {
pub active: usize,
pub maximum_active: usize,
pub nested_same_thread: usize,
pub owner_present: bool,
pub owner_thread: Option<std::string::String>,
}
pub fn reset() {
crate::runtime::reset_hosted_native_call_audit();
}
#[must_use]
pub fn snapshot() -> Snapshot {
let (active, maximum_active, nested_same_thread, owner_present, owner_thread) =
crate::runtime::hosted_native_call_audit();
Snapshot {
active,
maximum_active,
nested_same_thread,
owner_present,
owner_thread,
}
}
}
#[cfg(feature = "blas-level1-concurrency-native-tests")]
#[doc(hidden)]
pub mod blas1_concurrency_test_support {
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct Snapshot {
pub active: usize,
pub maximum_active: usize,
pub hosted_overlaps: usize,
}
pub fn reset() {
crate::runtime::reset_blas1_native_call_audit();
}
#[must_use]
pub fn snapshot() -> Snapshot {
let (active, maximum_active, hosted_overlaps) = crate::runtime::blas1_native_call_audit();
Snapshot {
active,
maximum_active,
hosted_overlaps,
}
}
}
#[cfg(any(
feature = "quadrature-basic",
feature = "quadrature-breakpoints",
feature = "quadrature-weighted",
feature = "quadrature-oscillatory",
feature = "quadrature-fourier",
feature = "quadrature-nonadaptive",
feature = "quadrature-piecewise-polynomial",
feature = "roots-scalar",
feature = "nonlinear-easy",
feature = "nonlinear-expert",
feature = "nonlinear-systems",
feature = "least-squares-nonlinear-easy",
feature = "least-squares-nonlinear-expert",
feature = "least-squares-covariance",
feature = "ode-sdrive-expert"
))]
mod callback_runtime;
#[cfg(any(
feature = "quadrature-basic",
feature = "quadrature-breakpoints",
feature = "quadrature-weighted",
feature = "quadrature-oscillatory",
feature = "quadrature-fourier",
feature = "quadrature-nonadaptive",
feature = "quadrature-piecewise-polynomial",
feature = "tabulated-data"
))]
pub mod quadrature;
#[cfg(any(feature = "roots-scalar", feature = "roots-polynomial"))]
pub mod roots;
#[cfg(any(
feature = "nonlinear-easy",
feature = "nonlinear-expert",
feature = "nonlinear-jacobian-check",
feature = "least-squares-nonlinear-expert",
feature = "least-squares-covariance",
feature = "nonlinear-systems"
))]
pub mod nonlinear;
#[cfg(any(
feature = "least-squares-nonlinear-easy",
feature = "least-squares-nonlinear-expert",
feature = "least-squares-covariance"
))]
pub mod least_squares;
#[cfg(not(any(
feature = "least-squares-nonlinear-easy",
feature = "least-squares-nonlinear-expert",
feature = "least-squares-covariance"
)))]
#[path = "docs_placeholders/least_squares.rs"]
pub mod least_squares;
#[cfg(any(
feature = "least-squares-linear-nonnegative",
feature = "least-squares-linear-bounded",
feature = "least-squares-linear-constrained",
feature = "least-squares-linear-bounded-constrained"
))]
pub mod linear_least_squares;
#[cfg(feature = "least-squares-linear-bounded")]
pub mod bounded_least_squares;
#[cfg(feature = "least-squares-linear-constrained")]
pub mod constrained_least_squares;
#[cfg(feature = "least-squares-linear-bounded-constrained")]
pub mod bounded_constrained_least_squares;
#[cfg(feature = "ode-sdrive-expert")]
pub mod ode;
#[cfg(feature = "optimization-linear-programming-in-memory")]
pub mod linear_programming;
pub mod roadmap;
pub mod linear_algebra;
pub mod integration;
pub mod equations;
pub mod differential_equations;
pub mod optimization;
pub mod transforms;
pub mod interpolation;