12345678910111213141516171819202122232425262728293031323334353637383940 |
- #include "../common.hpp"
- #include "../ext/scalar_int_sized.hpp"
- #include "../ext/scalar_uint_sized.hpp"
- #include "../detail/type_float.hpp"
- namespace glm
- {
- template<typename genType>
- GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool equal(genType const& x, genType const& y, genType const& epsilon)
- {
- return abs(x - y) <= epsilon;
- }
- template<typename genType>
- GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, genType const& epsilon)
- {
- return abs(x - y) > epsilon;
- }
- template<typename genType>
- GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool equal(genType const& x, genType const& y, int MaxULPs)
- {
- detail::float_t<genType> const a(x);
- detail::float_t<genType> const b(y);
- // Different signs means they do not match.
- if(a.negative() != b.negative())
- return false;
- // Find the difference in ULPs.
- typename detail::float_t<genType>::int_type const DiffULPs = abs(a.i - b.i);
- return DiffULPs <= MaxULPs;
- }
- template<typename genType>
- GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, int ULPs)
- {
- return !equal(x, y, ULPs);
- }
- }//namespace glm
|