rsl-interpolation 0.1.18

A re-write of GSL's Interpolation Routines in Rust.
Documentation
use crate::tests::XYTable;
use crate::tests::test_interp;
use crate::{Accelerator, InterpType, Interpolation, Linear};

#[test]
fn test_type_fields() {
    let _ = <Linear as InterpType<f64>>::name(&Linear);
    let _ = <Linear as InterpType<f64>>::min_size(&Linear);
}

#[test]
fn gsl_test_linear() {
    let xa = [0.0, 1.0, 2.0, 3.0];
    let ya = [0.0, 1.0, 2.0, 3.0];

    let interp = Linear.build(&xa, &ya).unwrap();

    let xtest = [0.0, 0.5, 1.0, 1.5, 2.5, 3.0];
    let ytest = [0.0, 0.5, 1.0, 1.5, 2.5, 3.0];
    let dytest = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0];
    let iytest = [0.0, 0.125, 0.5, 9.0 / 8.0, 25.0 / 8.0, 9.0 / 2.0];

    let data_table = XYTable { x: &xa, y: &ya };

    let test_e_table = XYTable {
        x: &xtest,
        y: &ytest,
    };

    let test_d_table = XYTable {
        x: &xtest,
        y: &dytest,
    };

    let test_i_table = XYTable {
        x: &xtest,
        y: &iytest,
    };

    assert_eq!(
        interp
            .eval_deriv2(&xa, &ya, 1.5, &mut Accelerator::new())
            .unwrap(),
        0.0
    );

    test_interp(data_table, test_e_table, test_d_table, test_i_table, interp);
}