Himalaya
Powers.hpp
Go to the documentation of this file.
1 // ====================================================================
2 // This file is part of Himalaya.
3 //
4 // Himalaya is licenced under the GNU General Public License (GNU GPL)
5 // version 3.
6 // ====================================================================
7 
8 #pragma once
9 
10 namespace himalaya {
11 namespace {
12 
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)); }
32 
33 } // anonymous namespace
34 } // himalaya namespace
Definition: H3.cpp:14