USRP Hardware Driver and USRP Manual Version: 4.0.0.0-0-unknown
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#pragma once
13
14
15namespace uhd { namespace math { namespace fp_compare {
16
17 template<> UHD_INLINE
19
20 _value = value;
21 _epsilon = SINGLE_PRECISION_EPSILON;
22 }
23
24 template<> UHD_INLINE
26 _value = value;
27 _epsilon = DOUBLE_PRECISION_EPSILON;
28 }
29
30 template<typename float_t> UHD_INLINE
32 : _value(value),
33 _epsilon(epsilon)
34 { /* NOP */ }
35
36 template<typename float_t> UHD_INLINE
38 : _value(copy._value),
39 _epsilon(copy._epsilon)
40 { /* NOP */ }
41
42 template<typename float_t> UHD_INLINE
44 { /* NOP */ }
45
46 template<typename float_t> UHD_INLINE
48 _value = copy._value;
49 _epsilon = copy._epsilon;
50 }
51
52 template<typename float_t> UHD_INLINE
54
55 bool lhs_compare = ((std::abs(lhs._value - rhs._value) / std::abs(lhs._value))
56 <= lhs._epsilon);
57 bool rhs_compare = ((std::abs(lhs._value - rhs._value) / std::abs(rhs._value))
58 <= rhs._epsilon);
59
60 return (lhs_compare && rhs_compare);
61 }
62
63 template<typename float_t> UHD_INLINE
65 return !(lhs == rhs);
66 }
67
68 template<typename float_t> UHD_INLINE
70 return (lhs._value + lhs._epsilon) < (rhs._value - rhs._epsilon);
71 }
72
73 template<typename float_t> UHD_INLINE
75 return !(lhs > rhs);
76 }
77
78 template<typename float_t> UHD_INLINE
80 return (lhs._value - lhs._epsilon) > (rhs._value + rhs._epsilon);
81 }
82
83 template<typename float_t> UHD_INLINE
85 return !(lhs < rhs);
86 }
87
88 template<typename float_t> UHD_INLINE
90
91 bool lhs_compare = ((std::abs(lhs._value - rhs) / std::abs(lhs._value))
92 <= lhs._epsilon);
93 bool rhs_compare = ((std::abs(lhs._value - rhs) / std::abs(rhs))
94 <= DOUBLE_PRECISION_EPSILON);
95
96 return (lhs_compare && rhs_compare);
97 }
98
99 template<typename float_t> UHD_INLINE
101 return !(lhs == rhs);
102 }
103
104 template<typename float_t> UHD_INLINE
106
107 return (lhs._value + lhs._epsilon) < (rhs - DOUBLE_PRECISION_EPSILON);
108 }
109
110 template<typename float_t> UHD_INLINE
112 return !(lhs > rhs);
113 }
114
115 template<typename float_t> UHD_INLINE
117
118 return (lhs._value - lhs._epsilon) > (rhs + DOUBLE_PRECISION_EPSILON);
119 }
120
121 template<typename float_t> UHD_INLINE
123 return !(lhs < rhs);
124 }
125
126 template<typename float_t> UHD_INLINE
128
129 bool lhs_compare = ((std::abs(lhs - rhs._value) / std::abs(lhs))
130 <= DOUBLE_PRECISION_EPSILON);
131 bool rhs_compare = ((std::abs(lhs - rhs._value) / std::abs(rhs._value))
132 <= rhs._epsilon);
133
134 return (lhs_compare && rhs_compare);
135 }
136
137 template<typename float_t> UHD_INLINE
139 return !(lhs == rhs);
140 }
141
142 template<typename float_t> UHD_INLINE
144
145 return (lhs + DOUBLE_PRECISION_EPSILON) < (rhs._value - rhs._epsilon);
146 }
147
148 template<typename float_t> UHD_INLINE
150 return !(lhs > rhs);
151 }
152
153 template<typename float_t> UHD_INLINE
155
156 return (lhs - DOUBLE_PRECISION_EPSILON) > (rhs._value + rhs._epsilon);
157 }
158
159 template<typename float_t> UHD_INLINE
161 return !(lhs < rhs);
162 }
163
164} } } //namespace uhd::math::fp_compare
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 &copy)
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:52
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
Definition build_info.hpp:12