#ifndef PYTHONIC_BUILTIN_POW_HPP #define PYTHONIC_BUILTIN_POW_HPP #include "pythonic/include/builtins/pow.hpp" #include "pythonic/numpy/power.hpp" #include "pythonic/utils/functor.hpp" PYTHONIC_NS_BEGIN namespace builtins { double pow(long x, long y) { return std::pow((double)x, (double)y); } template long pow(long x, std::integral_constant) { if (N == 0) return 1; if (N == 1) return x; long tmp = pow(x, std::integral_constant{}); if (N % 2 == 0) return tmp * tmp; else return tmp * tmp * x; } template auto pow(Types &&... args) -> decltype(numpy::functor::power{}(std::forward(args)...)) { return numpy::functor::power{}(std::forward(args)...); } } PYTHONIC_NS_END #endif