%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/thread-self/root/lib/python3/dist-packages/pythran/pythonic/builtins/
Upload File :
Create Path :
Current File : //proc/thread-self/root/lib/python3/dist-packages/pythran/pythonic/builtins/pow.hpp

#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 N>
  long pow(long x, std::integral_constant<long, N>)
  {
    if (N == 0)
      return 1;
    if (N == 1)
      return x;
    long tmp = pow(x, std::integral_constant<long, N / 2>{});
    if (N % 2 == 0)
      return tmp * tmp;
    else
      return tmp * tmp * x;
  }

  template <class... Types>
  auto pow(Types &&... args)
      -> decltype(numpy::functor::power{}(std::forward<Types>(args)...))
  {
    return numpy::functor::power{}(std::forward<Types>(args)...);
  }
}
PYTHONIC_NS_END

#endif

Zerion Mini Shell 1.0