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: