1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//! Numerical Integradion Library for Rust
//!
//! This crate offers utilities for calculating 1-dimentional integral by default.
//! Also, multi-dimentional integral toolbox are available (but experimental).
//!
//! Experimental utilities are not tested well, and then quite buggy at the moment.
//! If you found any bugs, feel free to create an issue or send a pull request.
//! This crate is looking for contributors.
//!
//! # Features
//!
//! `gkquad` aims to offer **easy**, **extensible**, and **fast** utilities.
//! Not only users can calculate the integral for various functions, but
//! developpers are able to write a new integration algorithms.

#![cfg_attr(docsrs, feature(doc_cfg, optin_builtin_traits))]
#![cfg_attr(not(feature = "std"), no_std)]
#![allow(
    deprecated,
    clippy::float_cmp,
    clippy::cognitive_complexity,
    clippy::uninit_assumed_init,
    clippy::excessive_precision,
    clippy::unreadable_literal
)]

#[cfg(not(feature = "std"))]
extern crate core;

extern crate alloc;

#[cfg(all(
    not(target_arch = "x86"),
    not(target_arch = "x86_64"),
    feature = "simd"
))]
compile_error!("`simd` feature flag requires x86 or x86_64 architecture.");

mod common;
mod error;
mod utils;

#[cfg(not(feature = "std"))]
mod float;

pub use common::*;
pub use error::*;

pub mod single;

#[cfg(feature = "double")]
#[cfg_attr(docsrs, doc(cfg(feature = "double")))]
pub mod double;

pub mod prelude;