sequential_integration/
calculation_functions.rs1use fehler::throws;
2
3use crate::{engine, errors::Error};
4
5#[throws]
6pub fn calculate_single_integral_simpson<E: Fn(f64) -> f64>(
7 equation: E,
8 first_integral_begin: f64,
9 first_integral_end: f64,
10 first_integral_step: f64,
11) -> f64 {
12 let simpson_quadrature = engine::quadrature::simpson::SimpsonQuadratureSingleIntegral::new(
13 equation,
14 first_integral_step,
15 )?;
16
17 engine::calculate_single_integral(simpson_quadrature, first_integral_begin, first_integral_end)?
18}
19
20#[throws]
21pub fn calculate_double_integral_simpson<
22 E: Fn(f64, f64) -> f64,
23 F1: Fn(f64) -> f64,
24 F2: Fn(f64) -> f64,
25>(
26 equation: E,
27 first_integral_begin: f64,
28 first_integral_end: f64,
29 first_integral_step: f64,
30 second_integral_begin: F1,
31 second_integral_end: F2,
32 second_integral_step: f64,
33) -> f64 {
34 let simpson_quadrature = engine::quadrature::simpson::SimpsonQuadratureDoubleIntegral::new(
35 equation,
36 first_integral_step,
37 second_integral_step,
38 )?;
39
40 engine::calculate_double_integral(
41 simpson_quadrature,
42 first_integral_begin,
43 first_integral_end,
44 second_integral_begin,
45 second_integral_end,
46 )?
47}
48
49#[throws]
50pub fn calculate_triple_integral_simpson<
51 E: Fn(f64, f64, f64) -> f64,
52 F1: Fn(f64) -> f64,
53 F2: Fn(f64) -> f64,
54 F3: Fn(f64, f64) -> f64,
55 F4: Fn(f64, f64) -> f64,
56>(
57 equation: E,
58 first_integral_begin: f64,
59 first_integral_end: f64,
60 first_integral_step: f64,
61 second_integral_begin: F1,
62 second_integral_end: F2,
63 second_integral_step: f64,
64 third_integral_begin: F3,
65 third_integral_end: F4,
66 third_integral_step: f64,
67) -> f64 {
68 let simpson_quadrature = engine::quadrature::simpson::SimpsonQuadratureTripleIntegral::new(
69 equation,
70 first_integral_step,
71 second_integral_step,
72 third_integral_step,
73 )?;
74
75 engine::calculate_triple_integral(
76 simpson_quadrature,
77 first_integral_begin,
78 first_integral_end,
79 second_integral_begin,
80 second_integral_end,
81 third_integral_begin,
82 third_integral_end,
83 )?
84}