5namespace isce3 {
namespace math {
13 static constexpr T eps = std::numeric_limits<T>::epsilon();
14 return std::sqrt(eps);
19float root_epsilon<float>()
21 return static_cast<float>(0.00034526698300124390839884978618400831996329879769945L);
26double root_epsilon<double>()
28 return static_cast<double>(0.1490116119384765625e-7L);
33long double root_epsilon<long double>()
35 return static_cast<long double>(0.32927225399135962333569506281281311031656150598474e-9L);
40T fourth_root_epsilon()
42 return std::sqrt(root_epsilon<T>());
47float fourth_root_epsilon<float>()
49 return static_cast<float>(0.018581361171917516667460937040007436176452688944747L);
54double fourth_root_epsilon<double>()
56 return static_cast<double>(0.0001220703125L);
61long double fourth_root_epsilon<long double>()
63 return static_cast<long double>(0.18145860519450699870567321328132261891067079047605e-4L);
73 static_assert(std::is_floating_point<T>::value);
75 using U =
typename std::remove_cv<T>::type;
76 static constexpr auto eps1 = detail::root_epsilon<U>();
77 static constexpr auto eps2 = detail::fourth_root_epsilon<U>();
79 auto x = T(M_PI) * std::abs(t);
83 auto out =
static_cast<T
>(1);
85 out -= x * x /
static_cast<T
>(6);
90 return std::sin(x) / x;
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5