sequential-integration 0.0.2

Lightweight library for sequential integration
Documentation
use fehler::throws;

use crate::{engine, errors::Error};

#[throws]
pub fn calculate_double_integral_simpson(
    equation: &str,
    first_integral_begin: f64,
    first_integral_end: f64,
    first_integral_step: f64,
    second_integral_begin: &str,
    second_integral_end: &str,
    second_integral_step: f64,
) -> f64 {
    let simpson_quadrature = engine::quadrature::simpson::SimpsonQuadratureDoubleIntegral::new(
        equation,
        first_integral_step,
        second_integral_step,
    )?;

    engine::calculate_double_integral(
        simpson_quadrature,
        first_integral_begin,
        first_integral_end,
        second_integral_begin,
        second_integral_end,
    )?
}

#[throws]
pub fn calculate_triple_integral_simpson(
    equation: &str,
    first_integral_begin: f64,
    first_integral_end: f64,
    first_integral_step: f64,
    second_integral_begin: &str,
    second_integral_end: &str,
    second_integral_step: f64,
    third_integral_begin: &str,
    third_integral_end: &str,
    third_integral_step: f64,
) -> f64 {
    let simpson_quadrature = engine::quadrature::simpson::SimpsonQuadratureTripleIntegral::new(
        equation,
        first_integral_step,
        second_integral_step,
        third_integral_step,
    )?;

    engine::calculate_triple_integral(
        simpson_quadrature,
        first_integral_begin,
        first_integral_end,
        second_integral_begin,
        second_integral_end,
        third_integral_begin,
        third_integral_end,
    )?
}