USRP Hardware Driver and USRP Manual Version: 4.6.0.0
UHD and USRP Manual
 
Loading...
Searching...
No Matches
fp_compare_delta.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
17template <typename float_t>
18UHD_INLINE float_t fp_compare_select_delta(float_t lhs_delta, float_t rhs_delta)
19{
20 return ((lhs_delta > rhs_delta) ? lhs_delta : rhs_delta);
21}
22
23template <>
25{
26 _value = value;
27 _delta = SINGLE_PRECISION_DELTA;
28}
29
30template <>
32{
33 _value = value;
34 _delta = DOUBLE_PRECISION_DELTA;
35}
36
37template <typename float_t>
39 : _value(value), _delta(delta)
40{ /* NOP */
41}
42
43template <typename float_t>
45 const fp_compare_delta<float_t>& copy)
46 : _value(copy._value), _delta(copy._delta)
47{ /* NOP */
48}
49
50template <typename float_t>
54
55template <typename float_t>
57 const fp_compare_delta<float_t>& copy)
58{
59 _value = copy._value;
60 _delta = copy._delta;
61}
62
63template <typename float_t>
65{
66 float_t delta = fp_compare_select_delta(lhs._delta, rhs._delta);
67 return (std::abs(lhs._value - rhs._value) < delta);
68}
69
70template <typename float_t>
72{
73 return !(lhs == rhs);
74}
75
76template <typename float_t>
78{
79 float_t delta = fp_compare_select_delta(lhs._delta, rhs._delta);
80 return ((rhs._value - lhs._value) > delta);
81}
82
83template <typename float_t>
85{
86 return !(lhs > rhs);
87}
88
89template <typename float_t>
91{
92 float_t delta = fp_compare_select_delta(lhs._delta, rhs._delta);
93 return ((lhs._value - rhs._value) > delta);
94}
95
96template <typename float_t>
98{
99 return !(lhs < rhs);
100}
101
102template <typename float_t>
104{
105 float_t delta =
106 float_t(fp_compare_select_delta(double(lhs._delta), DOUBLE_PRECISION_DELTA));
107 return (std::abs(lhs._value - rhs) < delta);
108}
109
110template <typename float_t>
112{
113 return !(lhs == rhs);
114}
115
116template <typename float_t>
118{
119 float_t delta =
120 float_t(fp_compare_select_delta(double(lhs._delta), DOUBLE_PRECISION_DELTA));
121 return ((rhs - lhs._value) > delta);
122}
123
124template <typename float_t>
126{
127 return !(lhs > rhs);
128}
129
130template <typename float_t>
132{
133 float_t delta =
134 float_t(fp_compare_select_delta(double(lhs._delta), DOUBLE_PRECISION_DELTA));
135 return ((lhs._value - rhs) > delta);
136}
137
138template <typename float_t>
140{
141 return !(lhs < rhs);
142}
143
144template <typename float_t>
146{
147 float_t delta = fp_compare_select_delta(DOUBLE_PRECISION_DELTA, double(rhs._delta));
148 return (std::abs(lhs - rhs._value) < delta);
149}
150
151template <typename float_t>
153{
154 return !(lhs == rhs);
155}
156
157template <typename float_t>
159{
160 float_t delta =
161 float_t(fp_compare_select_delta(DOUBLE_PRECISION_DELTA, double(rhs._delta)));
162 return ((rhs._value - lhs) > delta);
163}
164
165template <typename float_t>
167{
168 return !(lhs > rhs);
169}
170
171template <typename float_t>
173{
174 float_t delta =
175 float_t(fp_compare_select_delta(DOUBLE_PRECISION_DELTA, double(rhs._delta)));
176 return ((lhs - rhs._value) > delta);
177}
178
179template <typename float_t>
181{
182 return !(lhs < rhs);
183}
184
185}}} // namespace uhd::math::fp_compare
UHD_INLINE fp_compare_delta(float_t value)
float_t _delta
Definition math.hpp:213
UHD_INLINE void operator=(const fp_compare_delta &copy)
Definition fp_compare_delta.ipp:56
UHD_INLINE ~fp_compare_delta()
Definition fp_compare_delta.ipp:51
float_t _value
Definition math.hpp:212
#define UHD_INLINE
Definition config.h:65
UHD_INLINE float_t fp_compare_select_delta(float_t lhs_delta, float_t rhs_delta)
Definition fp_compare_delta.ipp:18
UHD_INLINE bool operator!=(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition fp_compare_delta.ipp:71
UHD_INLINE bool operator<=(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition fp_compare_delta.ipp:84
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:77
UHD_INLINE bool operator>(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition fp_compare_delta.ipp:90
UHD_INLINE bool operator>=(fp_compare_delta< float_t > lhs, fp_compare_delta< float_t > rhs)
Definition fp_compare_delta.ipp:97
Definition build_info.hpp:12