1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//! Shared numeric substrate: root finding, quadrature, dense linear algebra
//! and least squares, and minimisation over `f64`.
//!
//! These are the general numeric routines geometry algorithms build on --
//! curve and surface fitting, fairing, projection and inversion -- in one
//! place instead of re-derived inline. The reference designs are OCCT's
//! `math` package, QUADPACK, Brent (1973) and MINPACK.
//!
//! | Need | Routine |
//! | --- | --- |
//! | a root of `f` between two points of opposite sign | [`find_root`] |
//! | every real root of a polynomial in an interval | [`Polynomial::real_roots`] |
//! | `integral f` with an error estimate | [`integrate`] |
//! | fixed Gauss rule for an integrand of known degree | [`GaussLegendre`] |
//! | square system | [`Lu`] |
//! | symmetric positive definite system | [`Cholesky`] |
//! | large sparse symmetric positive definite system | [`conjugate_gradient`] on a [`SparseMatrix`] |
//! | linear least squares, rank | [`Qr`], [`least_squares`] |
//! | least squares with equality constraints | [`constrained_least_squares`] |
//! | nonlinear least squares, nonlinear equations | [`levenberg_marquardt`] |
//! | minimum of `f` on an interval | [`minimize_scalar`] |
//!
//! # Contract
//!
//! - Non-finite input is refused by name ([`NumericError::NonFiniteInput`]),
//! as is a non-finite value from a caller's function.
//! - Every answer says how far it can be trusted: a bracket that contains
//! the root, an error estimate, a condition estimate, or an explicitly
//! unresolved region. Which of these is a proven bound and which is an
//! estimate is stated on each field.
//! - Iterative routines report a [`Status`]. One that ran out of budget
//! still returns its best value and estimate; its `converged()` accessor
//! turns that into [`NumericError::NotConverged`] for callers that only
//! accept a met tolerance.
//! - Singular, rank-deficient, non-symmetric and indefinite matrices are
//! refused, never solved into infinities.
//!
//! There are no geometry types here and no dependencies: values are plain
//! `f64` slices, a small row-major [`Matrix`] and a compressed-row
//! [`SparseMatrix`].
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;