USRP Hardware Driver and USRP Manual Version: 3.15.0.0-MacPorts-Release
UHD and USRP Manual
 
Loading...
Searching...
No Matches
fp_compare_epsilon.ipp
Go to the documentation of this file.
1//
2// Copyright 2014 Ettus Research LLC
3// Copyright 2018 Ettus Research, a National Instruments Company
4//
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
7
8
9#include <cmath>
10#include <typeinfo>
11
12#ifndef INCLUDED_UHD_UTILS_FP_COMPARE_EPSILON_IPP
13#define INCLUDED_UHD_UTILS_FP_COMPARE_EPSILON_IPP
14
15
16namespace uhd { namespace math { namespace fp_compare {
17
18 template<> UHD_INLINE
20
21 _value = value;
22 _epsilon = SINGLE_PRECISION_EPSILON;
23 }
24
25 template<> UHD_INLINE
27 _value = value;
28 _epsilon = DOUBLE_PRECISION_EPSILON;
29 }
30
31 template<typename float_t> UHD_INLINE
33 : _value(value),
34 _epsilon(epsilon)
35 { /* NOP */ }
36
37 template<typename float_t> UHD_INLINE
39 : _value(copy._value),
40 _epsilon(copy._epsilon)
41 { /* NOP */ }
42
43 template<typename float_t> UHD_INLINE
46
47 template<typename float_t> UHD_INLINE
49 _value = copy._value;
50 _epsilon = copy._epsilon;
51 }
52
53 template<typename float_t> UHD_INLINE
55
56 bool lhs_compare = ((std::abs(lhs._value - rhs._value) / std::abs(lhs._value))
57 <= lhs._epsilon);
58 bool rhs_compare = ((std::abs(lhs._value - rhs._value) / std::abs(rhs._value))
59 <= rhs._epsilon);
60
61 return (lhs_compare && rhs_compare);
62 }
63
64 template<typename float_t> UHD_INLINE
66 return !(lhs == rhs);
67 }
68
69 template<typename float_t> UHD_INLINE
71 return (lhs._value + lhs._epsilon) < (rhs._value - rhs._epsilon);
72 }
73
74 template<typename float_t> UHD_INLINE
76 return !(lhs > rhs);
77 }
78
79 template<typename float_t> UHD_INLINE
81 return (lhs._value - lhs._epsilon) > (rhs._value + rhs._epsilon);
82 }
83
84 template<typename float_t> UHD_INLINE
86 return !(lhs < rhs);
87 }
88
89 template<typename float_t> UHD_INLINE
91
92 bool lhs_compare = ((std::abs(lhs._value - rhs) / std::abs(lhs._value))
93 <= lhs._epsilon);
94 bool rhs_compare = ((std::abs(lhs._value - rhs) / std::abs(rhs))
95 <= DOUBLE_PRECISION_EPSILON);
96
97 return (lhs_compare && rhs_compare);
98 }
99
100 template<typename float_t> UHD_INLINE
102 return !(lhs == rhs);
103 }
104
105 template<typename float_t> UHD_INLINE
107
108 return (lhs._value + lhs._epsilon) < (rhs - DOUBLE_PRECISION_EPSILON);
109 }
110
111 template<typename float_t> UHD_INLINE
113 return !(lhs > rhs);
114 }
115
116 template<typename float_t> UHD_INLINE
118
119 return (lhs._value - lhs._epsilon) > (rhs + DOUBLE_PRECISION_EPSILON);
120 }
121
122 template<typename float_t> UHD_INLINE
124 return !(lhs < rhs);
125 }
126
127 template<typename float_t> UHD_INLINE
129
130 bool lhs_compare = ((std::abs(lhs - rhs._value) / std::abs(lhs))
131 <= DOUBLE_PRECISION_EPSILON);
132 bool rhs_compare = ((std::abs(lhs - rhs._value) / std::abs(rhs._value))
133 <= rhs._epsilon);
134
135 return (lhs_compare && rhs_compare);
136 }
137
138 template<typename float_t> UHD_INLINE
140 return !(lhs == rhs);
141 }
142
143 template<typename float_t> UHD_INLINE
145
146 return (lhs + DOUBLE_PRECISION_EPSILON) < (rhs._value - rhs._epsilon);
147 }
148
149 template<typename float_t> UHD_INLINE
151 return !(lhs > rhs);
152 }
153
154 template<typename float_t> UHD_INLINE
156
157 return (lhs - DOUBLE_PRECISION_EPSILON) > (rhs._value + rhs._epsilon);
158 }
159
160 template<typename float_t> UHD_INLINE
162 return !(lhs < rhs);
163 }
164
165} } } //namespace uhd::math::fp_compare
166
167#endif /* INCLUDED_UHD_UTILS_FP_COMPARE_EPSILON_IPP */
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 &copy)
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
Definition build_info.hpp:13