csaps 0.3.0

Cubic spline approximation (smoothing)
Documentation
use ndarray::array;
use approx::assert_abs_diff_eq;

use csaps::GridCubicSmoothingSpline;


#[test]
fn test_make_vector_1() {
    let x0 = array![1., 2., 3., 4.];
    let x = vec![x0.view()];

    let y = array![1., 2., 3., 4.];

    let yi = GridCubicSmoothingSpline::new(&x, &y)
        .make().unwrap()
        .evaluate(&x).unwrap();

    assert_abs_diff_eq!(yi, y);
}


#[test]
fn test_make_vector_2() {
    let x0 = array![1., 2., 3., 4.];
    let x = vec![x0.view()];

    let xi0 = array![1., 1.5, 2., 2.5, 3., 3.5, 4.];
    let xi = vec![xi0.view()];

    let y = array![1., 2., 3., 4.];
    let yi_expected = array![1., 1.5, 2., 2.5, 3., 3.5, 4.];

    let yi = GridCubicSmoothingSpline::new(&x, &y)
        .make().unwrap()
        .evaluate(&xi).unwrap();

    assert_abs_diff_eq!(yi, yi_expected);
}


#[test]
fn test_make_surface_1() {
    let x0 = array![1., 2., 3.];
    let x1 = array![1., 2., 3., 4.];
    let x = vec![x0.view(), x1.view()];

    let y = array![
        [1., 2., 3., 4.],
        [5., 6., 7., 8.],
        [9., 10., 11., 12.],
    ];

    let yi = GridCubicSmoothingSpline::new(&x, &y)
        .make().unwrap()
        .evaluate(&x).unwrap();

    assert_abs_diff_eq!(yi, y);
}


#[test]
fn test_make_surface_2() {
    let x0 = array![1., 2., 3.];
    let x1 = array![1., 2., 3., 4.];
    let x = vec![x0.view(), x1.view()];

    let xi0 = array![1., 1.5, 2., 2.5, 3.];
    let xi1 = array![1., 1.5, 2., 2.5, 3., 3.5, 4.];
    let xi = vec![xi0.view(), xi1.view()];

    let y = array![
        [1., 2., 3., 4.],
        [5., 6., 7., 8.],
        [9., 10., 11., 12.],
    ];

    let yi_expected = array![
        [1., 1.5, 2., 2.5, 3., 3.5, 4.],
        [3., 3.5, 4., 4.5, 5., 5.5, 6.],
        [5., 5.5, 6., 6.5, 7., 7.5, 8.],
        [7., 7.5, 8., 8.5, 9., 9.5, 10.],
        [9., 9.5, 10., 10.5, 11., 11.5, 12.],
    ];

    let yi = GridCubicSmoothingSpline::new(&x, &y)
        .make().unwrap()
        .evaluate(&xi).unwrap();

    assert_abs_diff_eq!(yi, yi_expected);
}