8 #ifndef CXXUTILS_FPCOMPARE_H
9 #define CXXUTILS_FPCOMPARE_H
13 #if defined(__FLT_EVAL_METHOD__) && \
14 (__FLT_EVAL_METHOD__ == 2 || __FLT_EVAL_METHOD__ < 0)
17 # define CXXUTILS_FPCOMPARE_VOLATILE volatile
18 #elif defined(__i386__) && !defined(__SSE2__)
24 # define CXXUTILS_FPCOMPARE_VOLATILE volatile
26 # define CXXUTILS_FPCOMPARE_VOLATILE
35 bool equal (
double a,
double b)
37 CXXUTILS_FPCOMPARE_VOLATILE
double va = a;
38 CXXUTILS_FPCOMPARE_VOLATILE
double vb = b;
44 bool equal (
float a,
float b)
46 CXXUTILS_FPCOMPARE_VOLATILE
float va = a;
47 CXXUTILS_FPCOMPARE_VOLATILE
float vb = b;
53 bool greater (
double a,
double b)
55 CXXUTILS_FPCOMPARE_VOLATILE
double va = a;
56 CXXUTILS_FPCOMPARE_VOLATILE
double vb = b;
62 bool greater (
float a,
float b)
64 CXXUTILS_FPCOMPARE_VOLATILE
float va = a;
65 CXXUTILS_FPCOMPARE_VOLATILE
float vb = b;
71 bool less (
double a,
double b)
73 CXXUTILS_FPCOMPARE_VOLATILE
double va = a;
74 CXXUTILS_FPCOMPARE_VOLATILE
double vb = b;
80 bool less (
float a,
float b)
82 CXXUTILS_FPCOMPARE_VOLATILE
float va = a;
83 CXXUTILS_FPCOMPARE_VOLATILE
float vb = b;
89 bool greater_equal (
double a,
double b)
91 CXXUTILS_FPCOMPARE_VOLATILE
double va = a;
92 CXXUTILS_FPCOMPARE_VOLATILE
double vb = b;
98 bool greater_equal (
float a,
float b)
100 CXXUTILS_FPCOMPARE_VOLATILE
float va = a;
101 CXXUTILS_FPCOMPARE_VOLATILE
float vb = b;
107 bool less_equal (
double a,
double b)
109 CXXUTILS_FPCOMPARE_VOLATILE
double va = a;
110 CXXUTILS_FPCOMPARE_VOLATILE
double vb = b;
116 bool less_equal (
float a,
float b)
118 CXXUTILS_FPCOMPARE_VOLATILE
float va = a;
119 CXXUTILS_FPCOMPARE_VOLATILE
float vb = b;
127 namespace fpcompare_fn {
131 :
public std::binary_function<double, double, bool>
134 operator()(
double a,
double b)
const
135 {
return fpcompare::equal (a, b); }
140 :
public std::binary_function<float, float, bool>
143 operator()(
float a,
float b)
const
144 {
return fpcompare::equal (a, b); }
149 :
public std::binary_function<double, double, bool>
152 operator()(
double a,
double b)
const
153 {
return fpcompare::greater (a, b); }
158 :
public std::binary_function<float, float, bool>
161 operator()(
float a,
float b)
const
162 {
return fpcompare::greater (a, b); }
167 :
public std::binary_function<double, double, bool>
170 operator()(
double a,
double b)
const
171 {
return fpcompare::less (a, b); }
176 :
public std::binary_function<float, float, bool>
179 operator()(
float a,
float b)
const
180 {
return fpcompare::less (a, b); }
185 :
public std::binary_function<double, double, bool>
188 operator()(
double a,
double b)
const
189 {
return fpcompare::greater_equal (a, b); }
194 :
public std::binary_function<float, float, bool>
197 operator()(
float a,
float b)
const
198 {
return fpcompare::greater_equal (a, b); }
203 :
public std::binary_function<double, double, bool>
206 operator()(
double a,
double b)
const
207 {
return fpcompare::less_equal (a, b); }
212 :
public std::binary_function<float, float, bool>
215 operator()(
float a,
float b)
const
216 {
return fpcompare::less_equal (a, b); }
224 #endif // not CXXUTILS_FPCOMPARE_H
Definition: fpcompare.h:211
Definition: fpcompare.h:157
Definition: fpcompare.h:193
Definition: fpcompare.h:202
Definition: fpcompare.h:139
Definition: fpcompare.h:148
Definition: fpcompare.h:184
Definition: fpcompare.h:130
Definition: fpcompare.h:175
Definition: fpcompare.h:166