use crate::DType;
use crate::interpolate::error::InterpolateResult;
use numr::runtime::Runtime;
use numr::tensor::Tensor;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum InterpNdMethod {
Nearest,
#[default]
Linear,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum ExtrapolateMode {
#[default]
Error,
Nan,
Extrapolate,
}
pub trait InterpNdAlgorithms<R: Runtime<DType = DType>> {
fn interpnd(
&self,
points: &[&Tensor<R>],
values: &Tensor<R>,
xi: &Tensor<R>,
method: InterpNdMethod,
extrapolate: ExtrapolateMode,
) -> InterpolateResult<Tensor<R>>;
}