23 #ifndef BERNOULLI_H_INCLUDED 24 #define BERNOULLI_H_INCLUDED 31 inline csl::Expr bernoulliCombinatorial(
size_t i,
size_t j)
34 return bernoulliCombinatorial(i, i - j);
36 size_t denom_j = i - j;
37 for (
size_t num_i = i; num_i > j; --num_i) {
40 rational /= denom_j--;
46 std::vector<csl::Expr>
const &B,
50 std::vector<csl::Expr> terms(n);
51 for (
size_t i = 0; i != n; ++i)
52 terms[i] = bernoulliCombinatorial(n, i) * B[i] / (n - i + 1);
53 return -csl::sum_s(terms);
58 inline csl::Expr bernoulliNumber(
size_t i)
60 static constexpr
size_t maxBernouilli = 25;
61 HEPAssert(i <= maxBernouilli,
62 mty::error::ValueError,
63 "Asking Bernouilli number " + toString(i) +
", but cannot go " 64 "beyond " + toString(maxBernouilli))
65 static std::vector<csl::Expr> B = {1};
68 for (
size_t j = B.size(); j <= i; ++j)
69 B.push_back(bernoulliRecursion(B, j));
Namespace of MARTY.
Definition: 2HDM.h:31