"""
Quadrature, i.e. numerical integration.

This module collects both classic and Bayesian quadrature rules used for numerical
integration of functions.

Bayesian quadrature methods integrate a function by iteratively building a probabilistic
model and using its predictions to adaptively choose points to evaluate the integrand.
"""

from probnum.quad.bayesian import *
from probnum.quad.polynomial import *
from probnum.quad.quadrature import *

# Public classes and functions. Order is reflected in documentation.
__all__ = [
    "quad",
    "nquad",
    "bayesquad",
    "nbayesquad",
    "Quadrature",
    "PolynomialQuadrature",
    "BayesianQuadrature",
    "VanillaBayesianQuadrature",
    "WSABIBayesianQuadrature",
    "ClenshawCurtis",
]

# Set correct module paths. Corrects links and module paths in documentation.
Quadrature.__module__ = "probnum.quad"
BayesianQuadrature.__module__ = "probnum.quad"
PolynomialQuadrature.__module__ = "probnum.quad"
