#science #simulation

no-std root1d

One dimensional root finding algorithms

7 unstable releases

0.4.0 Jul 20, 2024
0.3.2 Dec 23, 2023
0.3.1 Jun 2, 2023
0.2.1 May 8, 2023
0.1.0 Apr 15, 2022

#325 in Math

Download history 11/week @ 2024-06-23 102/week @ 2024-07-14 37/week @ 2024-07-21 1/week @ 2024-07-28 9/week @ 2024-08-11 11/week @ 2024-09-01 20/week @ 2024-09-08 13/week @ 2024-09-15 23/week @ 2024-09-22 53/week @ 2024-09-29 22/week @ 2024-10-06

114 downloads per month

GPL-2.0-or-later

86KB
1.5K SLoC

Find roots of functions of one variable

This crate provides algorithms over a generic type T to find roots of functions TT. It is readily usable for T being f64 and f32. Activating the feature rug, one can also use it with rug::Float and rug::Rational.

Usage

use root1d::toms748;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let root = toms748(|x| x*x - 2., 0., 2.).rtol(1e-10).root()?;
    println!("root: {}", root);
	Ok(())
}

For more information, consult the documentation of the latest release.

Highlights

  • Efficient & fully generic code.
  • Convenient interface with optional arguments and default termination criteria.
  • Support for non-copy types (for multi-precision numbers) minimizing the creation of temporary values.
  • State of the art root finding algorithm (Toms748) requiring only few evaluations of the function.
  • Compile with #![no_std] when declared with default-features = false.

Dependencies

~0–4MB
~79K SLoC