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>
|
| 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 std::shared_ptr< const FmEval_Taylor > | instance (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.
|
|
|
static const int | max_interp_order = 8 |
|
static const bool | INTERPOLATION_AND_RECURSION = false |
|
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
-
Real | the 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_ORDER | the interpolation order. The higher the order the less memory this object will need, but the computational cost will increase (usually very slightly) |
◆ eval()
template<typename Real = double, int INTERPOLATION_ORDER = 7>
computes Boys function values with m index in range [0,mmax]
- Parameters
-
[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; 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>
- Returns
- the maximum value of m for which this object can compute the Boys function
◆ precision()
template<typename Real = double, int INTERPOLATION_ORDER = 7>
The documentation for this class was generated from the following file: