cgrustplot 1.2.2

Plotting utility for Rust, with a variety of plot types and capabilities.
Documentation
#[allow(unused_imports)] // imports are used, but doesn't detect it?
use crate::helper::func_plot_domain::*;

#[test]
fn grad_desc_test_1() {
    let result = grad_desc(|x: f64| (x * x) + 10., 5., 1000);
    println!("{result}");
    assert!(result <= 1e-6);
}

#[test]
fn determine_plot_domain_test_1() {
    let f = |x: f64| 1. + x.powi(2);
    let o = determine_plot_domain(f);
    println!("test 1: {o:?}");
    let acceptable_domain = ((-0.1, -10.), (0.1, 10.));
    assert!(o.0 < acceptable_domain.0.0 && o.0 > acceptable_domain.0.1 && o.1 > acceptable_domain.1.0 && 0.1 < acceptable_domain.1.1);
}

#[test]
fn determine_plot_domain_test_2() {
    let f = |x: f64| 1. + x + x.powi(2) - 3. * x.powi(3) + x.powi(4);
    let o = determine_plot_domain(f);
    println!("test 2: {o:?}");
    let acceptable_domain = ((-0.1, -10.), (0.1, 10.));
    assert!(o.0 < acceptable_domain.0.0 && o.0 > acceptable_domain.0.1 && o.1 > acceptable_domain.1.0 && 0.1 < acceptable_domain.1.1);
}

#[test]
fn determine_plot_domain_test_3() {
    let f = |x: f64| (x.exp() / (1. + x.exp()));
    let o = determine_plot_domain(f);
    println!("test 3: {o:?}");
    let acceptable_domain = ((-0.1, -100.), (0.1, 100.));
    assert!(o.0 < acceptable_domain.0.0 && o.0 > acceptable_domain.0.1 && o.1 > acceptable_domain.1.0 && 0.1 < acceptable_domain.1.1);
}

#[test]
fn determine_plot_domain_test_4() {
    let f = |x: f64| x.sin();
    let o = determine_plot_domain(f);
    println!("test 4: {o:?}");
    let acceptable_domain = ((-3., -30.), (3., 30.));
    assert!(o.0 < acceptable_domain.0.0 && o.0 > acceptable_domain.0.1 && o.1 > acceptable_domain.1.0 && 0.1 < acceptable_domain.1.1);
}

#[test]
fn determine_plot_domain_test_5() {
    let f = |x: f64| if x <= 0. { 1. / x } else if x <= 9. { 1. + 0.2 * x } else { 3. };
    let o = determine_plot_domain(f);
    println!("test 5: {o:?}");
    let acceptable_domain = ((-1., -20.), (1., 20.));
    assert!(o.0 < acceptable_domain.0.0 && o.0 > acceptable_domain.0.1 && o.1 > acceptable_domain.1.0 && 0.1 < acceptable_domain.1.1);
}

#[test]
fn determine_plot_domain_test_6() {
    let f = |x: f64| 2. * x;
    let o = determine_plot_domain(f);
    println!("test 6: {o:?}");
    let acceptable_domain = ((-0.1, -10.), (0.1, 10.));
    assert!(o.0 < acceptable_domain.0.0 && o.0 > acceptable_domain.0.1 && o.1 > acceptable_domain.1.0 && 0.1 < acceptable_domain.1.1);
}

#[test]
fn determine_plot_domain_test_7() {
    let f = |_x: f64| 5.;
    let o = determine_plot_domain(f);
    println!("test 7: {o:?}");
    let acceptable_domain = ((-0.1, -10.), (0.1, 10.));
    assert!(o.0 < acceptable_domain.0.0 && o.0 > acceptable_domain.0.1 && o.1 > acceptable_domain.1.0 && 0.1 < acceptable_domain.1.1);
}

#[test]
fn determine_plot_domain_test_8() {
    let f = |x: f64| if x != 0. { 1. / x } else { 1. };
    let o = determine_plot_domain(f);
    println!("test 8: {o:?}");
    let acceptable_domain = ((-0.1, -10.), (0.1, 10.));
    assert!(o.0 < acceptable_domain.0.0 && o.0 > acceptable_domain.0.1 && o.1 > acceptable_domain.1.0 && 0.1 < acceptable_domain.1.1);
}

#[test]
fn determine_plot_domain_test_9() {
    let f = |x: f64| if x != 0. { (1. / x).sin() } else { 1. };
    let o = determine_plot_domain(f);
    println!("test 9: {o:?}");
    let acceptable_domain = ((-0.1, -10.), (0.1, 10.));
    assert!(o.0 < acceptable_domain.0.0 && o.0 > acceptable_domain.0.1 && o.1 > acceptable_domain.1.0 && 0.1 < acceptable_domain.1.1);
}