use crate::models::{FitModel, FitModelErrors, FitModelXDeriv};
use generic_array::GenericArray;
use generic_array_storage::Conv;
use typenum::U0;
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct Fixed<Model>(pub Model);
impl<Model> FitModel for Fixed<Model>
where
Model: FitModel,
{
type Scalar = Model::Scalar;
type ParamCount = U0;
fn evaluate(&self, x: &Self::Scalar) -> Self::Scalar {
self.0.evaluate(x)
}
fn jacobian(
&self,
_x: &Self::Scalar,
) -> impl Into<GenericArray<Self::Scalar, Self::ParamCount>> {
[]
}
fn set_params(&mut self, _new_params: GenericArray<Self::Scalar, Self::ParamCount>) {}
fn get_params(&self) -> impl Into<GenericArray<Self::Scalar, Self::ParamCount>> {
[]
}
}
impl<Model> FitModelXDeriv for Fixed<Model>
where
Model: FitModelXDeriv,
{
fn deriv_x(&self, x: &Self::Scalar) -> Self::Scalar {
self.0.deriv_x(x)
}
}
impl<Model> FitModelErrors for Fixed<Model>
where
Self: FitModel,
{
type OwnedModel = ();
fn with_errors(
_errors: GenericArray<Self::Scalar, <Self::ParamCount as Conv>::TNum>,
) -> Self::OwnedModel {
}
}
#[cfg(test)]
mod tests;