diff --git a/math/mathutils.cpp b/math/mathutils.cpp index eb1cb95..cc0c648 100644 --- a/math/mathutils.cpp +++ b/math/mathutils.cpp @@ -6,18 +6,10 @@ #include "mathutils.h" #include -double SpecFun::LogBinCoeff(const int k, const int n) { - return std::lgamma(n + 1) - std::lgamma(k + 1) - std::lgamma(n - k + 1); -} - double SpecFun::BinCoeff(const int k, const int n) { return std::exp(LogBinCoeff(k, n)); } -double SpecFun::LogBetaCoeff(const double alpha, const double beta) { - return std::lgamma(alpha) + std::lgamma(beta) - std::lgamma(alpha + beta); -} - double SpecFun::BetaCoeff(const double alpha, const double beta) { return std::exp(LogBetaCoeff(alpha, beta)); } diff --git a/math/mathutils.h b/math/mathutils.h index 686a335..441209a 100644 --- a/math/mathutils.h +++ b/math/mathutils.h @@ -13,7 +13,9 @@ class SpecFun { /** * log of Binomial coefficient. */ - inline static double LogBinCoeff(const int k, const int n); + inline static double LogBinCoeff(const int k, const int n) { + return std::lgamma(n + 1) - std::lgamma(k + 1) - std::lgamma(n - k + 1); + } /** * Binomial coefficient, i.e., n choose k. @@ -27,7 +29,10 @@ class SpecFun { /** * log of Beta distribution coefficient */ - inline static double LogBetaCoeff(const double alpha, const double beta); + inline static double LogBetaCoeff(const double alpha, const double beta) { + return std::lgamma(alpha) + std::lgamma(beta) - + std::lgamma(alpha + beta); + } /** * Beta distribution coefficient.