35 template <
class RealType>
39 const auto nReal =
static_cast<RealType
>(n);
41 const auto divisor = std::tgamma(nReal / 2.0 + 1.0);
42 return std::pow(piSqrt, nReal) / divisor;
51 template <
class RealType>
55 const auto nReal =
static_cast<RealType
>(n);
57 const auto divisor = std::tgamma(nReal / 2.0 + 1.0);
58 return std::pow(piSqrt * radius, nReal) / divisor;
67 template <
class RealType,
class IteratorType>
71 const auto nReal =
static_cast<RealType
>(
std::distance(beginRadii, endRadii));
72 const auto divisor = std::tgamma(nReal / 2.0 + 1.0);
75 for (; beginRadii != endRadii; ++beginRadii)
77 dividend *= *beginRadii;
80 return dividend / divisor;
92 template <
class RealType>
96 const auto nReal =
static_cast<RealType
>(n);
97 const auto divisor = std::tgamma(nReal / 2.0 + 1.0);
99 return std::pow(piSqrt, nReal) * std::pow(equatorialRadius, nReal - 1.0) * polarRadius /