Loading...
Searching...
No Matches
Namespaces | Functions
gamma.h File Reference

Packet-type friendly implementation of: More...

#include <numeric>
#include "util/poly.h"
#include "util/named.h"

Go to the source code of this file.

Namespaces

namespace  bbm
 

Functions

template<typename TA , typename TX , size_t MaxTerm = 100>
auto tgamma_lower (const TA &a, const TX &x)
 Unnormalized incomplete lower gamma function.
 
template<typename TA , typename TX , size_t MaxTerm = 100>
auto gamma_p (const TA &a, const TX &x)
 Normalized incomplete lower gamma function.
 
template<typename TA , typename TX , size_t MaxTerm = 100>
auto tgamma (const TA &a, const TX &x)
 Unnormalized incomplete upper gamma function.
 
template<typename TA , typename TX , size_t MaxTerm = 100>
auto gamma_q (const TA &a, const TX &x)
 Normalized incomplete upper gamma function.
 
template<typename TA , typename TX , size_t MaxTerm = 100>
auto gamma_pq (const TA &a, const TX &x)
 Normalized incomplete upper and lower gamma function.
 

Detailed Description

Packet-type friendly implementation of:

Follows for (a < 20) "Numerical Recipes in C++, The Art of Scientific Computing, 2nd ed.", Press et al., p 221, Sec. 6.2.

and

Follow for (a > 20): "The asymptotic expansion of the incomplete gamma functions", Temme [1979]: https://doi.org/10.1137/0510071

The accuracy for x < 1.1 is not optimal, and higher accuracy can be achieved following the additional steps described at https://www.boost.org/doc/libs/1_64_0/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html