Skip to main content

Fast, transparent first- and second-order automatic differentiation

Project description

ad

Fast, transparent first- and second-order automatic differentiation for Python

Tests Documentation Ruff

codecov Quality Gate Status License: BSD-3

PyPI Downloads Python versions

Overview

The ad package allows you to easily and transparently perform first- and second-order automatic differentiation. Advanced math involving trigonometric, logarithmic, hyperbolic, and related functions can be evaluated directly using the ad.admath submodule.

All base numeric types are supported (int, float, complex, etc.). The package is designed so underlying numeric types interact as they normally do during calculations. In practice, ad behaves like a lightweight wrapper that tracks derivatives while preserving standard numeric behavior.

From the Wikipedia entry on Automatic differentiation:

"AD exploits the fact that every computer program, no matter how complicated, executes a sequence of elementary arithmetic operations (addition, subtraction, multiplication, division, etc.) and elementary functions (exp, log, sin, cos, etc.). By applying the chain rule repeatedly to these operations, derivatives of arbitrary order can be computed automatically, and accurate to working precision."

See the package documentation for details and examples.

Main Features

  • Transparent calculations with derivatives, requiring little or no modification to existing code (including NumPy-based code).
  • Broad mathematical operation support, including most functions from math and cmath, plus convenience trigonometric, hyperbolic, and logarithmic helpers (csc, acoth, ln, etc.). Comparison operators follow the same rules as the wrapped numeric values.
  • Seamless real and complex arithmetic through ad.admath counterparts.
  • Automatic gradient and Hessian function generator for optimization workflows with scipy.optimize via gh(your_func_here).
  • Linear algebra routines in ad.linalg similar to NumPy's linalg, without LAPACK dependency.

Linear Algebra Routines

Decompositions

  • chol: Cholesky decomposition
  • lu: LU decomposition
  • qr: QR decomposition

Solving equations and matrix inversion

  • solve: General solver for linear systems
  • lstsq: Least-squares solver for linear systems
  • inv: Multiplicative inverse of a matrix

Installation

uv pip install ad

Requires Python 3.10+. See the full installation guide.

Documentation

License

BSD-3-Clause.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ad-1.5.0.tar.gz (148.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ad-1.5.0-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file ad-1.5.0.tar.gz.

File metadata

  • Download URL: ad-1.5.0.tar.gz
  • Upload date:
  • Size: 148.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ad-1.5.0.tar.gz
Algorithm Hash digest
SHA256 eaedc1ae1a0970df603518aba36b14b1f41997cdb2c479740875e25a30075ba5
MD5 3303b3ce83f6b7a61e9f3604635a5b06
BLAKE2b-256 00493944c72963d7d6f80fdf324576802f917f8fb64524a622a43f5072f9d440

See more details on using hashes here.

Provenance

The following attestation bundles were made for ad-1.5.0.tar.gz:

Publisher: publish_dist.yml on eggzec/ad

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ad-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: ad-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ad-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9e3a327745fbd19fe108071a7dea4e90b86a56c02babefbf978ddcdfef36dc54
MD5 d5c30c73c86bfc487f9641e9ec887106
BLAKE2b-256 b205dbfe03e4d51b30c29b09ce65967496a52761398882b207513175c16f53a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for ad-1.5.0-py3-none-any.whl:

Publisher: publish_dist.yml on eggzec/ad

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page