use eqsolver::single_variable::Secant;
use std::cell::RefCell;
fn main() {
// Sometimes the function to be solved requires mutation of its environment,
// for example saving the values that function was called with, or for
// memoization. This mutation behaviour can be done using a
// `std::cell::RefCell` as in this example.
let trace = RefCell::new(vec![]);
let f = |x: f64| {
trace.borrow_mut().push(x);
x * x - 2.
};
Secant::new(f).solve(0., 2.).unwrap();
println!("{:?}", trace.borrow());
// See this issue, https://github.com/AzeezDa/eqsolver/issues/5, for the
// reasoning behind this technicality.
}