TRIQS/TRIQS 4.0.0
Researching Interacting Quantum Systems
Loading...
Searching...
No Matches
triqs::utility::pade_approximant

#include <triqs/utility/pade_approximants.hpp>

Detailed Description

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.

Constructor & Destructor Documentation

◆ pade_approximant()

triqs::utility::pade_approximant::pade_approximant ( const nda::vector< dcomplex > & z_in,
const nda::vector< dcomplex > & u_in )
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} \).

Parameters
z_inComplex points where the function is known.
u_inFunction values at the corresponding points.

Definition at line 194 of file pade_approximants.hpp.

Member Function Documentation

◆ operator()()

dcomplex triqs::utility::pade_approximant::operator() ( dcomplex z) const
inline

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.

Parameters
zComplex evaluation point.
Returns
The Padé approximant value at \( z \).

Definition at line 246 of file pade_approximants.hpp.


The documentation for this class was generated from the following file: