13 template <
typename T> constexpr T pow2(T x) noexcept {
return x * x; }
14 template <
typename T> constexpr T pow3(T x) noexcept {
return x * x * x; }
15 template <
typename T> constexpr T pow4(T x) noexcept {
return pow2(pow2(x)); }
16 template <
typename T> constexpr T pow5(T x) noexcept {
return pow4(x) * x; }
17 template <
typename T> constexpr T pow6(T x) noexcept {
return pow2(pow2(x) * x); }
18 template <
typename T> constexpr T pow7(T x) noexcept {
return pow6(x) * x; }
19 template <
typename T> constexpr T pow8(T x) noexcept {
return pow2(pow4(x)); }
20 template <
typename T> constexpr T pow9(T x) noexcept {
return pow8(x) * x; }
21 template <
typename T> constexpr T power10(T x) noexcept {
return pow2(pow5(x)); }
22 template <
typename T> constexpr T pow11(T x) noexcept {
return power10(x) * x; }
23 template <
typename T> constexpr T pow12(T x) noexcept {
return pow2(pow6(x)); }
24 template <
typename T> constexpr T pow13(T x) noexcept {
return pow4(x) * pow9(x); }
25 template <
typename T> constexpr T pow14(T x) noexcept {
return pow2(pow7(x)); }
26 template <
typename T> constexpr T pow15(T x) noexcept {
return pow6(x) * pow9(x); }
27 template <
typename T> constexpr T pow16(T x) noexcept {
return pow2(pow8(x)); }
28 template <
typename T> constexpr T pow17(T x) noexcept {
return pow16(x) * x; }
29 template <
typename T> constexpr T pow18(T x) noexcept {
return pow2(pow9(x)); }
30 template <
typename T> constexpr T pow19(T x) noexcept {
return pow18(x) * x; }
31 template <
typename T> constexpr T pow20(T x) noexcept {
return pow2(power10(x)); }