convex_math/
lib.rs

1//! # Convex Math
2//!
3//! Mathematical utilities for the Convex fixed income analytics library.
4//!
5//! This crate provides:
6//!
7//! - **Solvers**: Root-finding algorithms (Newton-Raphson, Brent, Bisection)
8//! - **Optimization**: Function optimization (Levenberg-Marquardt, BFGS)
9//! - **Linear Algebra**: Matrix operations and decompositions
10//! - **Interpolation**: Numerical interpolation methods
11//! - **Extrapolation**: Curve extrapolation (Flat, Linear, Smith-Wilson)
12//!
13//! ## Design Philosophy
14//!
15//! - **Performance First**: Optimized for financial calculations
16//! - **Numerical Stability**: Careful handling of edge cases
17//! - **Generic**: Works with `f64` and `Decimal` where appropriate
18
19#![warn(missing_docs)]
20#![warn(clippy::all)]
21#![warn(clippy::pedantic)]
22#![allow(clippy::module_name_repetitions)]
23#![allow(clippy::missing_errors_doc)]
24#![allow(clippy::missing_panics_doc)]
25#![allow(clippy::must_use_candidate)]
26#![allow(clippy::items_after_statements)]
27#![allow(clippy::doc_markdown)]
28#![allow(clippy::cast_sign_loss)]
29#![allow(clippy::cast_possible_wrap)]
30#![allow(clippy::cast_lossless)]
31#![allow(clippy::cast_precision_loss)]
32#![allow(clippy::similar_names)]
33#![allow(clippy::many_single_char_names)]
34#![allow(clippy::too_many_lines)]
35#![allow(clippy::unreadable_literal)]
36#![allow(clippy::if_not_else)]
37#![allow(clippy::needless_pass_by_value)]
38#![allow(clippy::redundant_closure_for_method_calls)]
39#![allow(clippy::match_same_arms)]
40#![allow(clippy::unnecessary_wraps)]
41#![allow(clippy::uninlined_format_args)]
42#![allow(clippy::single_match_else)]
43#![allow(clippy::collapsible_if)]
44#![allow(clippy::derivable_impls)]
45
46pub mod error;
47pub mod extrapolation;
48pub mod interpolation;
49pub mod linear_algebra;
50pub mod optimization;
51pub mod solvers;
52
53/// Prelude module for convenient imports.
54pub mod prelude {
55    pub use crate::error::{MathError, MathResult};
56    pub use crate::extrapolation::{
57        ExtrapolationMethod, Extrapolator, FlatExtrapolator, LinearExtrapolator, SmithWilson,
58    };
59    pub use crate::interpolation::{
60        CubicSpline, Interpolator, LinearInterpolator, LogLinearInterpolator, MonotoneConvex,
61        NelsonSiegel, Svensson,
62    };
63    pub use crate::solvers::{
64        bisection, brent, hybrid, hybrid_numerical, newton_raphson, newton_raphson_numerical,
65        secant, BisectionSolver, BrentSolver, HybridSolver, NewtonSolver, RootFinder, SecantSolver,
66        Solver, SolverConfig, SolverResult,
67    };
68}
69
70pub use error::{MathError, MathResult};