#ifndef PYTHONIC_SCIPY_SPECIAL_BINOM_HPP #define PYTHONIC_SCIPY_SPECIAL_BINOM_HPP #include "pythonic/include/scipy/special/binom.hpp" #include "pythonic/types/ndarray.hpp" #include "pythonic/utils/functor.hpp" #include "pythonic/utils/numpy_traits.hpp" #define BOOST_MATH_THREAD_LOCAL thread_local #include PYTHONIC_NS_BEGIN namespace scipy { namespace special { namespace details { template double binom(T0 n, T1 k) { static_assert(std::is_integral::value && std::is_integral::value, "only support integer case of scipy.special.binom"); using namespace boost::math::policies; return boost::math::binomial_coefficient( n, k, make_policy(promote_double())); } } #define NUMPY_NARY_FUNC_NAME binom #define NUMPY_NARY_FUNC_SYM details::binom #include "pythonic/types/numpy_nary_expr.hpp" } } PYTHONIC_NS_END #endif