RandLib 2.0.0
Probability distributions, fitting, and heavy-tail tools for C++20
Loading...
Searching...
No Matches
gamma.hpp File Reference
#include <concepts>
#include <type_traits>
#include <randlib/math/constants.hpp>
#include <randlib/math/functions.hpp>
#include <randlib/math/beta.hpp>
#include <randlib/math/quadrature.hpp>
#include <randlib/math/roots.hpp>
#include <randlib/math/optimize.hpp>
#include <randlib/math/special_functions.hpp>
Include dependency graph for math/gamma.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  randlib::math::IncompleteGamma< Real >
 

Namespaces

namespace  randlib
 
namespace  randlib::math
 Beta-related functions.
 

Functions

template<std::floating_point Real>
Real randlib::math::factorial (Real n)
 Calculate n! using table values for small n <= 255 and built-in gamma function for large n > 255.
 
template<std::integral Integer>
long double randlib::math::factorial (Integer n)
 
template<std::floating_point Real = long double>
Real randlib::math::doubleFactorial (int n)
 Calculate n!!
 
template<std::floating_point Real = long double>
Real randlib::math::lfact (size_t n)
 Calculate log(n!) using table values for small n <= 255 and built-in lgamma function for large n > 255.
 
template<std::floating_point Real = long double>
Real randlib::math::ldfact (size_t n)
 ldoublefact
 
template<std::floating_point Real = long double>
Real randlib::math::binom (size_t n, size_t k)
 Calculate binomial coefficient.
 
template<std::floating_point Real = double>
Real randlib::math::stirlingError (size_t n)
 
template<std::floating_point Real = double>
Real randlib::math::logFactorialRatio (size_t x, size_t y)
 
template<std::floating_point Real>
Real randlib::math::bd0 (std::type_identity_t< Real > x, Real m)
 Deviance term of the saddle-point expansions of Poisson and binomial probabilities (C.
 
template<std::floating_point Real>
Real randlib::math::digamma (Real x)
 
template<std::floating_point Real>
Real randlib::math::digammamLog (Real x)
 
template<std::floating_point Real>
Real randlib::math::trigamma (Real x)
 
template<std::floating_point Real>
Real randlib::math::lpgamma (std::type_identity_t< Real > a, Real x, std::type_identity_t< Real > logA, std::type_identity_t< Real > lgammaA)
 Calculate logarithm of lower incomplete gamma function, accelerated by using precalculated value of log(a) and log(Γ(a))
 
template<std::floating_point Real>
Real randlib::math::lpgamma (std::type_identity_t< Real > a, Real x, std::type_identity_t< Real > logX)
 Calculate logarithm of lower incomplete gamma function, accelerated by using precalculated value of log(x)
 
template<std::floating_point Real>
Real randlib::math::lpgamma (std::type_identity_t< Real > a, Real x)
 Calculate logarithm of lower incomplete gamma function.
 
template<std::floating_point Real>
Real randlib::math::pgamma (std::type_identity_t< Real > a, Real x, std::type_identity_t< Real > logA, std::type_identity_t< Real > lgammaA)
 Calculate lower regularized incomplete gamma function, accelerated by using precalculated value of log(a) and log(Γ(a))
 
template<std::floating_point Real>
Real randlib::math::pgamma (std::type_identity_t< Real > a, Real x, std::type_identity_t< Real > logX)
 Calculate lower regularized incomplete gamma function, accelerated by using precalculated value of log(x)
 
template<std::floating_point Real>
Real randlib::math::pgamma (std::type_identity_t< Real > a, Real x)
 Calculate lower regularized incomplete gamma function.
 
template<std::floating_point Real>
Real randlib::math::lqgamma (std::type_identity_t< Real > a, Real x, std::type_identity_t< Real > logA, std::type_identity_t< Real > lgammaA)
 Calculate logarithm of upper incomplete gamma function, accelerated by using precalculated values of log(a) and log(Γ(a))
 
template<std::floating_point Real>
Real randlib::math::lqgamma (std::type_identity_t< Real > a, Real x, std::type_identity_t< Real > logX)
 Calculate logarithm of upper incomplete gamma function, accelerated by using precalculated value of log(x)
 
template<std::floating_point Real>
Real randlib::math::lqgamma (std::type_identity_t< Real > a, Real x)
 Calculate logarithm of upper incomplete gamma function.
 
template<std::floating_point Real>
Real randlib::math::qgamma (std::type_identity_t< Real > a, Real x, std::type_identity_t< Real > logA, std::type_identity_t< Real > lgammaA)
 Calculate upper regularized incomplete gamma function, accelerated by using precalculated values of log(a) and log(Γ(a))
 
template<std::floating_point Real>
Real randlib::math::qgamma (std::type_identity_t< Real > a, Real x, std::type_identity_t< Real > logX)
 Calculate upper regularized incomplete gamma function, accelerated by using precalculated value of log(x)
 
template<std::floating_point Real>
Real randlib::math::qgamma (std::type_identity_t< Real > a, Real x)
 Calculate upper regularized incomplete gamma function.
 
template<std::floating_point Real>
Real randlib::math::factorialForSmallValue (int n)
 Get n! using product method with table.
 
template<std::floating_point Real>
Real randlib::math::digammamLogForLargeX (Real x)
 
template<std::floating_point Real>
Real randlib::math::log1pmx (Real t)
 
template<std::floating_point Real>
Real randlib::math::logPrefactor (Real a, Real x, Real logX)
 
template<std::floating_point Real>
Real randlib::math::lowerSeries (Real a, Real x)
 
template<std::floating_point Real>
Real randlib::math::upperContinuedFraction (Real a, Real x)
 Modified Lentz evaluation of the continued fraction for Q(a, x), x ≥ a + 1.
 
template<std::floating_point Real>
IncompleteGamma< Real > randlib::math::incompleteGamma (Real a, Real x, Real logX)
 Regularized incomplete gamma ratios P(a, x) and Q(a, x) = 1 - P(a, x) and their logarithms.
 
template<std::floating_point Real>
void randlib::math::parametersVerification (Real a, Real x)
 

Variables

constexpr int randlib::math::FACTORIAL_TABLESIZE = 175
 
constexpr long double randlib::math::FACTORIAL_TABLE []
 
constexpr long double randlib::math::LOGFACTORIAL_TABLE []
 
constexpr size_t randlib::math::LOGFACTORIAL_TABLESIZE = 255