#integration #quadrature #rules #numerical #infinite #numeric #tanh-sinh

fnir

Fast numerical integration rules, like tanh-sinh quadrature

2 releases

0.1.1 Dec 26, 2024
0.1.0 Dec 26, 2024

#427 in Algorithms

Download history 203/week @ 2024-12-26

203 downloads per month

GPL-3.0 license

30KB
699 lines

Fast Numeric Integration in Rust (FNIR) build status

FNIR provides various numerical integration algorithms for use.

Usage

Add the following under [dependencies] in your cargo.toml

fnir = 0.1.1

To use for example the Michalski-Mosig variant of $\tanh\sinh$ quadrature include the following:

use fnir::{Integral, quadrature::{TanhSinh}};
...

let integrator = TanhSinh::new();
let func = |x: f64| f64::powi(x, 2);

let result = integrator.integrate(func, Some(0), Some(1)); // Ok(0.3333...)

WARNING: This project is in early stages and until 1.0.0 subject to breaking chances etc.

Use cases

This crate can be used to integrate integrals in the form $\int_a^b f(x) dx$ where $a, b \in \R$ and $f: \R \to B \subset \C$, semi-infinite integrals where either $a$ or $b$ is infinite and infinite intervals (both are infinite).

Currently used and planned quadratures are:

  • Trapezoidal rule
  • Michalski-Mosig $\tanh\sinh$
  • Michalski-Mosig $\exp\sinh$ (semi-infinite interval)
  • Michalski-Mosig $\sinh\sinh$ (infinite interval)

Planned future features include the following:

  • Complex contour integrals
  • Integrals over triangular surfaces
  • Element-wise integration of $N$-dimensional arrays

In some distant future the following would also be nice:

  • Vectorization (i.e. SIMD)
  • Generic parametrization

Contributing

Feel free to submit bug reports, feature requests, and the best of all, pull requests to those issues.

Dependencies

~465KB