conspire 0.7.6

The Rust interface to conspire.
Documentation
use super::LineSearch;
use crate::math::Scalar;

fn search(strong: bool) -> Scalar {
    LineSearch::Wolfe {
        control_1: 1e-3,
        control_2: 4e-1,
        cut_back: 5e-1,
        max_steps: 100,
        strong,
    }
    .backtrack(
        |x: &Scalar, _: Scalar| Ok(x.powi(2) / 2.0),
        |x: &Scalar| Ok(*x),
        &1.0,
        &1.0,
        &1.0,
        3.0,
    )
    .unwrap()
}

#[test]
fn wolfe_curvature_condition_follows_the_flag() {
    assert_eq!(search(false), 1.5);
    assert_eq!(search(true), 0.75)
}