We endevour to address and overcome some specific limitations with regards to the performances of contemporary adaptive and composite quadrature techniques for the numerical approximation of definite integrals of functions with endpoint singular/irregular behaviour and that can be modelled by generalised polynomials of non-integer-degree.
This repository consists of a cross-platform C++ library implementing the Monomial Transformation Quadrature Rule, an innovative algorithm based on a paper, published in 2009, and it is part of a broader work published more recently in Computer Physics Communications.
The software can run standalone applications or be integrated into larger codebases in scientific computing via links to its static library.
A full set of instructions, informative graphs, a mathematical background and general guidelines are discussed in a detailed User Manual which is located in the doc
subdirectory; you can either read the pdf print or compile the latex scripts within said directory. We strongly advise any new user of the library to read the User Manual for system-specific instructions regarding the correct installation and configuration of MTQR's dependencies, the compilation of the library itself, the execution of the proposed tests
and the integration in larger applications.
The repository source code is organised as follow (Figure 2.1 of the User Manual).
MTQR relies on two non-standard thrid-party libraries, both being open-source:
- Boost Multiprecision header-only library for the implementation of the floating point data type in quadruple precision (renamed in MTQR as
float128
); - GNU Scientific Library for root-finding algorithm and for testing and validation purposes, specifically:
- the
gsl_integration_qags
function implementing the adaptive Gauss-Kronrod tecnhique; - the
gsl_sf_bessel_Jnu
function for evaluating Bessel functions of fractional orders.
- the
We used CMake
to achive cross-platform compatibility in compiling and linking the source code. For detailed information we refer to Chapter 2 of the User Manual.
In the tests
subdir we implement two cases: drivers
is useful to get familiar with the fundamentals of MTQR and its two modes of execution loud and silent (see Chapter 3 of the User Manual); bessels
indicates and example of how MTQR can be applied to real-word applications in computational science and engineering by computing the definite integrals of Bessel functions (of the first kind) of fractional order. MTQR is designed to always achieve machine-epsilon precision (in double floating format format) by manipulating the minimum and maximum real exponents of the input generalised polynomials and shifting them between a continuous-regions that falls below such accuracy treshold as shown below (Figure 1.1 of the User Manual).
Other tests can be found in the work submitted for peer-review at Computer Physics Communications.