1#ifndef STAN_MATH_PRIM_FUN_LMGAMMA_HPP
2#define STAN_MATH_PRIM_FUN_LMGAMMA_HPP
54template <
typename T, require_arithmetic_t<T>* =
nullptr>
58 return result +
sum(
lgamma(x + (1 - Eigen::ArrayXd::LinSpaced(k, 1, k)) / 2));
72template <
typename T1,
typename T2, require_any_container_t<T1, T2>* =
nullptr>
73inline auto lmgamma(
const T1& a,
const T2& b) {
75 a, b, [&](
const auto& c,
const auto& d) {
return lmgamma(c, d); });
typename return_type< Ts... >::type return_type_t
Convenience type for the return type of the specified template parameters.
static constexpr double LOG_PI_OVER_FOUR
The value of one quarter the natural logarithm of , .
fvar< return_type_t< T, int > > lmgamma(int x1, const fvar< T > &x2)
fvar< T > lgamma(const fvar< T > &x)
Return the natural logarithm of the gamma function applied to the specified argument.
auto sum(const std::vector< T > &m)
Return the sum of the entries of the specified standard vector.
auto apply_scalar_binary(const T1 &x, const T2 &y, const F &f)
Base template function for vectorization of binary scalar functions defined by applying a functor to ...
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...