use serde::{Deserialize, Serialize};
use crate::utils;
use crate::utils::error::SimulationError;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
enum ThinningFunction {
Polynomial { coefficients: Vec<f64> },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Thinning {
function: ThinningFunction,
}
impl Thinning {
pub fn evaluate(self, point: f64) -> Result<f64, SimulationError> {
match &self.function {
ThinningFunction::Polynomial { coefficients } => {
utils::evaluate_polynomial(&coefficients, point)
}
}
}
}