Metadata-Version: 2.4
Name: quadax
Version: 0.3.0
Summary: Numerical quadrature with JAX
Author-email: Rory Conlin <mail@fouriest.net>
License-Expression: MIT
Project-URL: Homepage, https://github.com/f0uriest/quadax
Project-URL: Documentation, https://quadax.readthedocs.io/
Project-URL: Source Code, https://github.com/f0uriest/quadax/
Project-URL: Issues Tracker, https://github.com/f0uriest/quadax/issues
Project-URL: Contributing, https://github.com/f0uriest/quadax/blob/master/CONTRIBUTING.rst
Keywords: integration,quadrature,gauss,kronrod,tanh,sinh,romberg,adaptive
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: equinox<0.14,>=0.11.0
Requires-Dist: jax<0.12,>=0.5.0
Requires-Dist: numpy<2.6,>=1.25.0
Provides-Extra: test
Requires-Dist: scipy<1.19,>=1.11.1; extra == "test"
Requires-Dist: pytest<9.2,>=6.0.0; extra == "test"
Requires-Dist: pytest-cov<7.2,>=3.0; extra == "test"
Provides-Extra: docs
Requires-Dist: sphinx<9.2,>=3.0.0; extra == "docs"
Requires-Dist: sphinx_copybutton<0.6; extra == "docs"
Requires-Dist: sphinx-rtd-theme<3.2,>=1.0; extra == "docs"
Requires-Dist: sphinx-github-style<1.3,>=1.0; extra == "docs"
Provides-Extra: lint
Requires-Dist: ruff==0.16.4; extra == "lint"
Requires-Dist: pre-commit<4.7; extra == "lint"
Requires-Dist: pyright<1.2; extra == "lint"
Provides-Extra: dev
Requires-Dist: quadax[docs,lint,test]; extra == "dev"
Requires-Dist: build; extra == "dev"
Dynamic: license-file


.. image:: https://raw.githubusercontent.com/f0uriest/quadax/main/docs/_static/images/logo.png
    :alt: quadax
    :width: 420

|License| |DOI| |Issues| |Pypi|

|Docs| |UnitTests| |Codecov|

.. docs-include-start

quadax is a library for numerical quadrature and integration using JAX.

- ``vmap``-able, ``jit``-able, differentiable in both forward and reverse mode.
- Pluggable ``adjoint`` methods controlling how derivatives are computed.
- Scalar or vector valued integrands.
- Finite or infinite domains with discontinuities or singularities within the domain of integration.
- Globally adaptive Gauss-Kronrod and Clenshaw-Curtis quadrature for smooth integrands (similar to ``scipy.integrate.quad``)
- Adaptive tanh-sinh quadrature for singular or near singular integrands.
- Quadrature from sampled values using trapezoidal and Simpsons methods.

Coming soon:

- N-D quadrature (cubature)
- QMC methods
- Integration with weight functions
- Sparse grids (maybe, need to play with data structures and JAX)

Installation
============

quadax is installable with `pip`:

.. code-block:: console

    pip install quadax



Usage
=====

.. code-block:: python

    import jax.numpy as jnp
    import numpy as np
    from quadax import quadgk

    fun = lambda t: t * jnp.log(1 + t)

    epsabs = epsrel = 1e-5 # by default jax uses 32 bit, higher accuracy requires going to 64 bit
    a, b = 0, 1
    y, info = quadgk(fun, [a, b], epsabs=epsabs, epsrel=epsrel)
    assert info.err < max(epsabs, epsrel*abs(y))
    np.testing.assert_allclose(y, 1/4, rtol=epsrel, atol=epsabs)


.. docs-include-end

For full details of various options see the `API documentation <https://quadax.readthedocs.io/en/latest/api.html>`__


.. |License| image:: https://img.shields.io/github/license/f0uriest/quadax?color=blue&logo=open-source-initiative&logoColor=white
    :target: https://github.com/f0uriest/quadax/blob/master/LICENSE
    :alt: License

.. |DOI| image:: https://zenodo.org/badge/709132830.svg
    :target: https://zenodo.org/doi/10.5281/zenodo.10035983
    :alt: DOI

.. |Docs| image:: https://img.shields.io/readthedocs/quadax?logo=Read-the-Docs
    :target: https://quadax.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation

.. |UnitTests| image:: https://github.com/f0uriest/quadax/actions/workflows/unittest.yml/badge.svg
    :target: https://github.com/f0uriest/quadax/actions/workflows/unittest.yml
    :alt: UnitTests

.. |Codecov| image:: https://codecov.io/github/f0uriest/quadax/graph/badge.svg?token=MB11I7WE3I
    :target: https://codecov.io/github/f0uriest/quadax
    :alt: Coverage

.. |Issues| image:: https://img.shields.io/github/issues/f0uriest/quadax
    :target: https://github.com/f0uriest/quadax/issues
    :alt: GitHub issues

.. |Pypi| image:: https://img.shields.io/pypi/v/quadax
    :target: https://pypi.org/project/quadax/
    :alt: Pypi
