8#ifndef INCLUDED_UHD_UTILS_MATH_HPP
9#define INCLUDED_UHD_UTILS_MATH_HPP
13#include <boost/numeric/conversion/bounds.hpp>
15#if BOOST_VERSION >= 106700
16# include <boost/integer/common_factor.hpp>
18namespace _bmint = boost::integer;
20# include <boost/math/common_factor.hpp>
21namespace _bmint = boost::math;
49static const float SINGLE_PRECISION_EPSILON = 1.19e-7f;
50static const double DOUBLE_PRECISION_EPSILON = 2.22e-16;
95template <
typename float_t>
98template <
typename float_t>
101template <
typename float_t>
104template <
typename float_t>
107template <
typename float_t>
110template <
typename float_t>
116template <
typename float_t>
118template <
typename float_t>
120template <
typename float_t>
122template <
typename float_t>
124template <
typename float_t>
126template <
typename float_t>
129template <
typename float_t>
131template <
typename float_t>
133template <
typename float_t>
135template <
typename float_t>
137template <
typename float_t>
139template <
typename float_t>
151static const float SINGLE_PRECISION_DELTA = 1e-3f;
152static const double DOUBLE_PRECISION_DELTA = 1e-5;
155static const double FREQ_COMPARISON_DELTA_HZ = 0.1;
158namespace fp_compare {
186template <
typename float_t>
188template <
typename float_t>
190template <
typename float_t>
192template <
typename float_t>
194template <
typename float_t>
196template <
typename float_t>
201template <
typename float_t>
203template <
typename float_t>
205template <
typename float_t>
207template <
typename float_t>
209template <
typename float_t>
211template <
typename float_t>
214template <
typename float_t>
216template <
typename float_t>
218template <
typename float_t>
220template <
typename float_t>
222template <
typename float_t>
224template <
typename float_t>
236template <
typename IntegerType>
inline IntegerType
lcm(IntegerType x, IntegerType y)
239 return _bmint::lcm<IntegerType>(x, y);
243template <
typename IntegerType>
inline IntegerType
gcd(IntegerType x, IntegerType y)
246 return _bmint::gcd<IntegerType>(x, y);
UHD_INLINE fp_compare_delta(float_t value)
float_t _delta
Definition math.hpp:183
UHD_INLINE void operator=(const fp_compare_delta ©)
Definition fp_compare_delta.ipp:53
UHD_INLINE ~fp_compare_delta()
Definition fp_compare_delta.ipp:49
float_t _value
Definition math.hpp:182
float_t _epsilon
Definition math.hpp:77
UHD_INLINE ~fp_compare_epsilon()
Definition fp_compare_epsilon.ipp:44
UHD_INLINE void operator=(const fp_compare_epsilon ©)
Definition fp_compare_epsilon.ipp:48
float_t _value
Definition math.hpp:76
UHD_INLINE fp_compare_epsilon(float_t value)
#define UHD_INLINE
Definition config.h:53
UHD_INLINE bool operator!=(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition fp_compare_delta.ipp:65
UHD_INLINE bool operator<=(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition fp_compare_delta.ipp:76
UHD_INLINE bool operator==(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition fp_compare_delta.ipp:59
UHD_INLINE bool operator<(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition fp_compare_delta.ipp:70
UHD_INLINE bool operator>(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition fp_compare_delta.ipp:81
UHD_INLINE bool operator>=(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition fp_compare_delta.ipp:87
IntegerType lcm(IntegerType x, IntegerType y)
Portable version of lcm() across Boost versions.
Definition math.hpp:236
UHD_INLINE bool frequencies_are_equal(double lhs, double rhs)
Definition math.hpp:229
IntegerType gcd(IntegerType x, IntegerType y)
Portable version of gcd() across Boost versions.
Definition math.hpp:243
Definition build_info.hpp:13