solvr 0.2.0

Advanced computing library for real-world problem solving - optimization, differential equations, interpolation, statistics, and more
Documentation
use crate::interpolate::error::InterpolateResult;
use crate::interpolate::impl_generic::rect_bivariate_spline::{
    rect_bivariate_spline_evaluate_grid_impl, rect_bivariate_spline_evaluate_impl,
    rect_bivariate_spline_fit_impl, rect_bivariate_spline_integrate_impl,
    rect_bivariate_spline_partial_derivative_impl,
};
use crate::interpolate::traits::bspline::BSplineBoundary;
use crate::interpolate::traits::rect_bivariate_spline::{
    BivariateSpline, RectBivariateSplineAlgorithms,
};
use numr::runtime::cpu::{CpuClient, CpuRuntime};
use numr::tensor::Tensor;

impl RectBivariateSplineAlgorithms<CpuRuntime> for CpuClient {
    fn rect_bivariate_spline_fit(
        &self,
        x: &Tensor<CpuRuntime>,
        y: &Tensor<CpuRuntime>,
        z: &Tensor<CpuRuntime>,
        degree_x: usize,
        degree_y: usize,
        boundary: &BSplineBoundary,
    ) -> InterpolateResult<BivariateSpline<CpuRuntime>> {
        rect_bivariate_spline_fit_impl(self, x, y, z, degree_x, degree_y, boundary)
    }

    fn rect_bivariate_spline_evaluate(
        &self,
        spline: &BivariateSpline<CpuRuntime>,
        xi: &Tensor<CpuRuntime>,
        yi: &Tensor<CpuRuntime>,
    ) -> InterpolateResult<Tensor<CpuRuntime>> {
        rect_bivariate_spline_evaluate_impl(self, spline, xi, yi)
    }

    fn rect_bivariate_spline_evaluate_grid(
        &self,
        spline: &BivariateSpline<CpuRuntime>,
        xi: &Tensor<CpuRuntime>,
        yi: &Tensor<CpuRuntime>,
    ) -> InterpolateResult<Tensor<CpuRuntime>> {
        rect_bivariate_spline_evaluate_grid_impl(self, spline, xi, yi)
    }

    fn rect_bivariate_spline_partial_derivative(
        &self,
        spline: &BivariateSpline<CpuRuntime>,
        xi: &Tensor<CpuRuntime>,
        yi: &Tensor<CpuRuntime>,
        dx: usize,
        dy: usize,
    ) -> InterpolateResult<Tensor<CpuRuntime>> {
        rect_bivariate_spline_partial_derivative_impl(self, spline, xi, yi, dx, dy)
    }

    fn rect_bivariate_spline_integrate(
        &self,
        spline: &BivariateSpline<CpuRuntime>,
        xa: f64,
        xb: f64,
        ya: f64,
        yb: f64,
    ) -> InterpolateResult<Tensor<CpuRuntime>> {
        rect_bivariate_spline_integrate_impl(self, spline, xa, xb, ya, yb)
    }
}