nrfind 0.2.0

A set of useful mathematical functions for floating point numbers based on the Newton-Raphson method for finding roots.
Documentation

nrfind

Crates.io version badge Build Status

nrfind provides a Newton-Raphson root finder for arbitrary differentiable functions, as well as convenient wrappers for common use cases like square roots.

Documentation is available on docs.rs

A simple example of usage to find the roots of x3 + x2 + 1 in 18 iterations:

extern crate nrfind;

// The function for whose roots find_root will solve
fn f(x: f64) -> f64 {
    x.powi(3) + x.powi(2) + 1.0
}

// That function's derivative
fn fd(x: f64) -> f64 {
    (3.0 * x.powi(2)) + (2.0 * x)
}

fn main() {
    let initial_guess = 100;
    let precision = 0.1;
    let iterations = 18;

    let result = nrfind::find_root(&f, &fd, 
                                   &initial_guess, 
                                   &precision, 
                                   iterations).unwrap();

    // This is known to be the actual answer
    let actual: f64 = -1.4656;

    // The difference between the actual answer and the found result
    // is less than the provided precision.
    let difference = (actual - result).abs();
    assert!(difference <= precision);
}