25#ifndef _gcem_pow_integral_HPP
26#define _gcem_pow_integral_HPP
34template<
typename T1,
typename T2>
40template<
typename T1,
typename T2>
46 return( exp_term > T2(1) ? \
50 (exp_term == T2(1) ? val*base : val) );
53template<typename T1, typename T2, typename std::enable_if<std::is_signed<T2>::value>
::type* =
nullptr>
59 return( exp_term < T2(0) ? \
66template<typename T1, typename T2, typename std::enable_if<!std::is_signed<T2>::value>
::type* =
nullptr>
75template<
typename T1,
typename T2>
81 return( exp_term == T2(3) ? \
98template<typename T1, typename T2, typename std::enable_if<std::is_integral<T2>::value>
::type* =
nullptr>
107template<typename T1, typename T2, typename std::enable_if<!std::is_integral<T2>::value>
::type* =
nullptr>
120template<
typename T1,
typename T2>
type
Definition: core.h:556
constexpr T1 pow_integral_compute_recur(const T1 base, const T1 val, const T2 exp_term) noexcept
Definition: pow_integral.hpp:43
constexpr T1 pow_integral_sgn_check(const T1 base, const T2 exp_term) noexcept
Definition: pow_integral.hpp:56
constexpr T1 pow_integral(const T1 base, const T2 exp_term) noexcept
Definition: pow_integral.hpp:123
constexpr bool is_odd(const llint_t x) noexcept
Definition: is_odd.hpp:36
constexpr T1 pow_integral_type_check(const T1 base, const T2 exp_term) noexcept
Definition: pow_integral.hpp:101
constexpr T1 pow_integral_compute(const T1 base, const T2 exp_term) noexcept
Definition: pow_integral.hpp:78
Definition: is_even.hpp:29
long long int llint_t
Definition: gcem_options.hpp:71
std::numeric_limits< T > GCLIM
Definition: gcem_options.hpp:74