use crate::error::IntegrateError;
use crate::numerical_integration::GaussianQuadratureMethod;
pub mod hermite;
pub mod laguerre;
pub mod legendre;
pub const MAX_ORDER: usize = 30;
pub const fn nodes(
method: GaussianQuadratureMethod,
order: usize,
) -> Result<&'static [(f64, f64)], IntegrateError> {
let table: &[&[(f64, f64)]] = match method {
GaussianQuadratureMethod::GaussLegendre => &legendre::LEGENDRE,
GaussianQuadratureMethod::GaussHermite => &hermite::HERMITE,
GaussianQuadratureMethod::GaussLaguerre => &laguerre::LAGUERRE,
};
if order == 0 || order > MAX_ORDER {
return Err(IntegrateError::QuadratureOrderOutOfRange);
}
Ok(table[order])
}