1#ifndef ISCE_FFT_FFTUTIL_ICC
2#error "FFTUtil.icc is an implementation detail of FFTUtil.h"
7namespace isce3 {
namespace fft {
9template<typename T, typename std::enable_if<std::is_integral<T>::value>::type *>
14 throw isce3::except::DomainError(ISCE_SRCINFO(),
"input must be non-negative");
30inline std::int32_t intpow(std::int32_t base, std::int32_t exponent)
33 for (std::int32_t i = 0; i < exponent; ++i) {
40inline std::int32_t nextFastPower(std::int32_t n)
43 throw isce3::except::DomainError(ISCE_SRCINFO(),
"input must be non-negative");
52 double logn = std::log(n);
53 std::int32_t max5 = std::ceil(logn / std::log(5));
54 std::int32_t max3 = std::ceil(logn / std::log(3));
55 std::int32_t mmin = INT32_MAX;
56 for (std::int32_t x5 = 0; x5 <= max5; ++x5) {
57 std::int32_t n5 = intpow(5, x5);
58 for (std::int32_t x3 = 0; x3 <= max3; ++x3) {
62 std::int64_t m =
static_cast<std::int64_t
>(n5) * intpow(3, x3);
69 mmin =
static_cast<std::int32_t
>(m);
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5