use crate::numerical_integration::mode::GaussianQuadratureMethod;
use crate::utils::error_codes::CalcError;
pub mod hermite;
pub mod laguerre;
pub mod legendre;
pub const MAX_ORDER: usize = 30;
pub fn nodes(
method: GaussianQuadratureMethod,
order: usize,
) -> Result<&'static [(f64, f64)], CalcError> {
let table: &[&[(f64, f64)]] = match method {
GaussianQuadratureMethod::GaussLegendre => &legendre::LEGENDRE,
GaussianQuadratureMethod::GaussHermite => &hermite::HERMITE,
GaussianQuadratureMethod::GaussLaguerre => &laguerre::LAGUERRE,
};
table
.get(order)
.filter(|pairs| !pairs.is_empty())
.copied()
.ok_or(CalcError::QuadratureOrderOutOfRange)
}