LIBINT  2.6.0
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
libint2::FmEval_Taylor< Real, INTERPOLATION_ORDER > Class Template Reference

Computes the Boys function, $ F_m (T) = \int_0^1 u^{2m} \exp(-T u^2) \, {\rm d}u $, using Taylor interpolation of up to 8-th order. More...

#include <boys.h>

Public Member Functions

 FmEval_Taylor (unsigned int mmax, Real precision=std::numeric_limits< Real >::epsilon())
 Constructs the object to be able to compute Boys funcion for m in [0,mmax], with relative precision.
 
int max_m () const
 
Real precision () const
 
void eval (Real *Fm, Real T, int mmax) const
 computes Boys function values with m index in range [0,mmax] More...
 

Static Public Member Functions

static std::shared_ptr< const FmEval_Taylorinstance (unsigned int mmax, Real precision=std::numeric_limits< Real >::epsilon())
 Singleton interface allows to manage the lone instance; adjusts max m and precision values as needed in thread-safe fashion.
 

Public Attributes

const double soft_zero_
 

Static Public Attributes

static const int max_interp_order = 8
 
static const bool INTERPOLATION_AND_RECURSION = false
 

Detailed Description

template<typename Real = double, int INTERPOLATION_ORDER = 7>
class libint2::FmEval_Taylor< Real, INTERPOLATION_ORDER >

Computes the Boys function, $ F_m (T) = \int_0^1 u^{2m} \exp(-T u^2) \, {\rm d}u $, using Taylor interpolation of up to 8-th order.

Template Parameters
Realthe type to use for all floating-point computations. Following expressions must be valid: exp(Real), pow(Real), fabs(Real), max(Real), and floor(Real).
INTERPOLATION_ORDERthe interpolation order. The higher the order the less memory this object will need, but the computational cost will increase (usually very slightly)

Member Function Documentation

◆ eval()

template<typename Real = double, int INTERPOLATION_ORDER = 7>
void libint2::FmEval_Taylor< Real, INTERPOLATION_ORDER >::eval ( Real *  Fm,
Real  T,
int  mmax 
) const
inline

computes Boys function values with m index in range [0,mmax]

Parameters
[out]Fmarray to be filled in with the Boys function values, must be at least mmax+1 elements long
[in]xthe Boys function argument
[in]mmaxthe maximum value of m for which Boys function will be computed; it must be <= the value returned by max_m() (this is not checked)

References libint2::simd::VectorSSEDouble::convert(), and libint2::simd::VectorAVXDouble::load().

◆ max_m()

template<typename Real = double, int INTERPOLATION_ORDER = 7>
int libint2::FmEval_Taylor< Real, INTERPOLATION_ORDER >::max_m ( ) const
inline
Returns
the maximum value of m for which this object can compute the Boys function

◆ precision()

template<typename Real = double, int INTERPOLATION_ORDER = 7>
Real libint2::FmEval_Taylor< Real, INTERPOLATION_ORDER >::precision ( ) const
inline
Returns
the precision with which this object can compute the Boys function

Referenced by libint2::FmEval_Taylor< Real, INTERPOLATION_ORDER >::instance().


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