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