|
TRIQS/TRIQS 4.0.0
Researching Interacting Quantum Systems
|
#include <triqs/utility/pade_approximants.hpp>
Padé approximant of a complex function sampled at \( \{ z_i \} \) with values \( \{ u_i \} \).
Given \( N \) sample points \( z_i \) and values \( u_i = u(z_i) \), the Padé approximant is represented as the continued fraction
\[ C_N(z) = \cfrac{a_1}{1 + \cfrac{a_2 (z - z_1)}{1 + \cfrac{a_3 (z - z_2)}{1 + \cdots \cfrac{a_N (z - z_{N-1})}{1}}}} , \]
which interpolates the data exactly, i.e. \( C_N(z_i) = u_i \).
The coefficients are \( a_i = g_i(z_i) \), where the \( g_p \) are obtained from the Vidberg–Serene recurrence
\[ g_1(z_i) = u_i , \qquad g_p(z_i) = \frac{g_{p-1}(z_{p-1}) - g_{p-1}(z_i)}{(z_i - z_{p-1})\, g_{p-1}(z_i)} , \quad p \geq 2 . \]
These coefficients are computed with GMP arbitrary precision (GMP_default_prec mantissa bits), and the continued fraction is then evaluated in standard std::complex<double> precision via operator()().
See also J. Low Temp. Phys. 29, 179 (1977).
Definition at line 171 of file pade_approximants.hpp.
Public Member Functions | |
| pade_approximant (const nda::vector< dcomplex > &z_in, const nda::vector< dcomplex > &u_in) | |
| Constructor computes the Padé coefficients from a set of complex sample points and values. | |
| dcomplex | operator() (dcomplex z) const |
| Evaluate the Padé continued fraction at the complex point \( z \). | |
Static Public Attributes | |
| static const int | GMP_default_prec = 256 |
| Default precision (in mantissa bits) used for the GMP floats during coefficient calculation. | |
|
inline |
Constructor computes the Padé coefficients from a set of complex sample points and values.
Builds the lower-triangular table \( g_{p}(z_j) \) from the Vidberg–Serene recurrence
\[ g_1(z_j) = u_j , \qquad g_p(z_j) = \frac{g_{p-1}(z_{p-1}) - g_{p-1}(z_j)}{(z_j - z_{p-1})\, g_{p-1}(z_j)} , \quad p \geq 2 , \]
and stores the continued-fraction coefficients \( a_j = g_j(z_j) \) as the diagonal of that table. The recurrence is truncated once \( |g_{p-1}(z_{p-1})|^2 < 10^{-20} \).
| z_in | Complex points where the function is known. |
| u_in | Function values at the corresponding points. |
Definition at line 194 of file pade_approximants.hpp.
Evaluate the Padé continued fraction at the complex point \( z \).
The continued fraction \( C_N(z) = A_N / B_N \) is evaluated with the standard recurrence for the numerators and denominators of the convergents,
\[ A_{n+1} = A_n + (z - z_n)\, a_{n+1}\, A_{n-1} , \qquad B_{n+1} = B_n + (z - z_n)\, a_{n+1}\, B_{n-1} , \]
starting from \( A_0 = 0 \), \( A_1 = a_1 \) and \( B_0 = B_1 = 1 \). Each step is rescaled by \( B_{n+1} \) to avoid overflow.
| z | Complex evaluation point. |
Definition at line 246 of file pade_approximants.hpp.