13 #include <boost/numeric/conversion/bounds.hpp>
15 #if BOOST_VERSION >= 106700
16 # include <boost/integer/common_factor.hpp>
18 namespace _bmint = boost::integer;
20 # include <boost/math/common_factor.hpp>
21 namespace _bmint = boost::math;
33 static const double PI = 3.14159265358979323846;
51 static const float SINGLE_PRECISION_EPSILON = 1.19e-7f;
52 static const double DOUBLE_PRECISION_EPSILON = 2.22e-16;
54 namespace fp_compare {
69 template <
typename float_t>
98 template <
typename float_t>
101 template <
typename float_t>
104 template <
typename float_t>
107 template <
typename float_t>
110 template <
typename float_t>
113 template <
typename float_t>
119 template <
typename float_t>
121 template <
typename float_t>
123 template <
typename float_t>
125 template <
typename float_t>
127 template <
typename float_t>
129 template <
typename float_t>
132 template <
typename float_t>
134 template <
typename float_t>
136 template <
typename float_t>
138 template <
typename float_t>
140 template <
typename float_t>
142 template <
typename float_t>
154 static const float SINGLE_PRECISION_DELTA = 1e-3f;
155 static const double DOUBLE_PRECISION_DELTA = 1e-5;
158 static const double FREQ_COMPARISON_DELTA_HZ = 0.1;
161 namespace fp_compare {
176 template <
typename float_t>
190 template <
typename float_t>
192 template <
typename float_t>
194 template <
typename float_t>
196 template <
typename float_t>
198 template <
typename float_t>
200 template <
typename float_t>
205 template <
typename float_t>
207 template <
typename float_t>
209 template <
typename float_t>
211 template <
typename float_t>
213 template <
typename float_t>
215 template <
typename float_t>
218 template <
typename float_t>
220 template <
typename float_t>
222 template <
typename float_t>
224 template <
typename float_t>
226 template <
typename float_t>
228 template <
typename float_t>
241 return std::pow(10, (dB_val) / 10.0);
246 return 10 * std::log10(val);
251 template <
typename IntegerType>
252 inline IntegerType
lcm(IntegerType x, IntegerType y)
255 return _bmint::lcm<IntegerType>(x, y);
259 template <
typename IntegerType>
260 inline IntegerType
gcd(IntegerType x, IntegerType y)
263 return _bmint::gcd<IntegerType>(x, y);
UHD_INLINE fp_compare_delta(float_t value)
float_t _delta
Definition: math.hpp:187
UHD_INLINE void operator=(const fp_compare_delta ©)
Definition: fp_compare_delta.ipp:52
UHD_INLINE ~fp_compare_delta()
Definition: fp_compare_delta.ipp:48
float_t _value
Definition: math.hpp:186
float_t _epsilon
Definition: math.hpp:80
UHD_INLINE ~fp_compare_epsilon()
Definition: fp_compare_epsilon.ipp:43
UHD_INLINE void operator=(const fp_compare_epsilon ©)
Definition: fp_compare_epsilon.ipp:47
float_t _value
Definition: math.hpp:79
UHD_INLINE fp_compare_epsilon(float_t value)
#define UHD_INLINE
Definition: config.h:55
UHD_INLINE bool operator!=(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition: fp_compare_delta.ipp:64
UHD_INLINE bool operator<=(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition: fp_compare_delta.ipp:75
UHD_INLINE bool operator==(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition: fp_compare_delta.ipp:58
UHD_INLINE bool operator<(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition: fp_compare_delta.ipp:69
UHD_INLINE bool operator>(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition: fp_compare_delta.ipp:80
UHD_INLINE bool operator>=(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition: fp_compare_delta.ipp:86
IntegerType lcm(IntegerType x, IntegerType y)
Portable version of lcm() across Boost versions.
Definition: math.hpp:252
UHD_INLINE bool frequencies_are_equal(double lhs, double rhs)
Definition: math.hpp:233
double dB_to_lin(const double dB_val)
Definition: math.hpp:239
IntegerType gcd(IntegerType x, IntegerType y)
Portable version of gcd() across Boost versions.
Definition: math.hpp:260
double lin_to_dB(const double val)
Definition: math.hpp:244
Definition: build_info.hpp:12