diffaaable 1.3.1

diffaaable 1.3.1#

DOI

diffaaable is a JAX differentiable version of the AAA algorithm. The derivatives are implemented as custom Jacobian Vector products in accordance to [1]. A detailed derivation of the used matrix expressions is provided in the appendix of [2]. Under the hood diffaaable uses the AAA implementation of baryrat. Additionaly the following application specific extensions to the AAA algorithm are included:

  • Adaptive: Adaptive refinement strategy (called Iterative Sample Refinement (ISR) in the corresponding paper) to minimize the number of function evaluation needed to precisely locate poles within some domain

  • Vectorial: AAA algorithm acting on vector valued functions \(\mathbf{f}(z)\) as presented in [3].

  • Tensor: Convenience alternative to the vector valued AAA algorithm (vectorial) accepting a tensor valued function F_k (so arbitrary dimensionality) instead of the single dimension that vectorial requires.

  • Lorentz: Variant that enforces symmetric poles around the imaginary axis.

  • Selective Refinement: Use a divide and conquer theme to capture many pole simultaneously and accurately, by limiting the number of poles per AAA solve. Suggested in [4].

Installation#

to install diffaaable run pip install diffaaable

Usage#

Please refer to the quickstart tutorial

Contributing#

Feel free to open issues and/or PRs.

Citation#

When using this software package for scientific work please cite the associated publication [2].