Fast constexpr integer powers (ipow)

A good optimizing compiler will transform tail-recursive functions to run as fast as imperative code. - SO

see also

#include <cstdint>

constexpr int64_t ipow(int64_t base, int exp, int64_t result = 1) {
  return exp < 1 ? result : ipow(base*base, exp/2, (exp % 2) ? result*base : result);
}
Written on June 26, 2021, Last update on July 3, 2021
c++ math recurse optimize fastware Fibonacci