LIBINT
2.6.0
|
Computes the Boys function, $ F_m (T) = \int_0^1 u^{2m} \exp(-T u^2) \, {\rm d}u $, using 7-th order Chebyshev interpolation. More...
#include <boys.h>
Public Member Functions | |
FmEval_Chebyshev7 (int m_max, double precision=std::numeric_limits< double >::epsilon()) | |
int | max_m () const |
void | eval (Real *Fm, Real x, int m_max) const |
fills in Fm with computed Boys function values for m in [0,mmax] More... | |
Static Public Member Functions | |
static std::shared_ptr< const FmEval_Chebyshev7 > | instance (int m_max, double=0.0) |
Singleton interface allows to manage the lone instance; adjusts max m values as needed in thread-safe fashion. | |
Computes the Boys function, $ F_m (T) = \int_0^1 u^{2m} \exp(-T u^2) \, {\rm d}u $, using 7-th order Chebyshev interpolation.
|
inline |
m_max | maximum value of the Boys function index; set to -1 to skip initialization |
precision | the desired relative precision |
std::invalid_argument | if m_max is greater than cheb_table_mmax (see boys_cheb7.h) |
std::invalid_argument | if precision is smaller than std::numeric_limits<double>::epsilon() |
References libint2::verbose(), and libint2::verbose_stream().
|
inline |
fills in Fm with computed Boys function values for m in [0,mmax]
[out] | Fm | array to be filled in with the Boys function values, must be at least mmax+1 elements long |
[in] | x | the Boys function argument |
[in] | mmax | the maximum value of m for which Boys function will be computed; mmax must be <= the value returned by max_m |
References libint2::simd::VectorSSEDouble::convert(), libint2::simd::VectorAVXDouble::convert(), and libint2::simd::VectorAVXDouble::load_aligned().
|
inline |