1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef __MATH_AUX_H
2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define __MATH_AUX_H
3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <limits>
5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#undef __STD
7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (STLPORT) || defined (_STLP_USE_NAMESPACES)
8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define __STD std::
9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else
10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define __STD
11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/*
14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * This function is not only used to compare floating point values with a tolerance,
15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * it also leads to ambiguity problems if the called functions do not have the
16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * right prototype.
17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */
18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Tp>
19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottbool are_equals(_Tp val, _Tp ref) {
20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  if (val < ref) {
21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    return (ref - val) <= __STD numeric_limits<_Tp>::epsilon();
22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  }
23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  else {
24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    return (val - ref) <= __STD numeric_limits<_Tp>::epsilon();
25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  }
26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#undef __STD
29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif // __MATH_AUX_H
31