1/// @ref core 2/// @file glm/detail/func_vector_relational.inl 3 4#include <limits> 5 6namespace glm 7{ 8 template <typename T, precision P, template <typename, precision> class vecType> 9 GLM_FUNC_QUALIFIER vecType<bool, P> lessThan(vecType<T, P> const & x, vecType<T, P> const & y) 10 { 11 assert(x.length() == y.length()); 12 13 vecType<bool, P> Result(uninitialize); 14 for(length_t i = 0; i < x.length(); ++i) 15 Result[i] = x[i] < y[i]; 16 17 return Result; 18 } 19 20 template <typename T, precision P, template <typename, precision> class vecType> 21 GLM_FUNC_QUALIFIER vecType<bool, P> lessThanEqual(vecType<T, P> const & x, vecType<T, P> const & y) 22 { 23 assert(x.length() == y.length()); 24 25 vecType<bool, P> Result(uninitialize); 26 for(length_t i = 0; i < x.length(); ++i) 27 Result[i] = x[i] <= y[i]; 28 return Result; 29 } 30 31 template <typename T, precision P, template <typename, precision> class vecType> 32 GLM_FUNC_QUALIFIER vecType<bool, P> greaterThan(vecType<T, P> const & x, vecType<T, P> const & y) 33 { 34 assert(x.length() == y.length()); 35 36 vecType<bool, P> Result(uninitialize); 37 for(length_t i = 0; i < x.length(); ++i) 38 Result[i] = x[i] > y[i]; 39 return Result; 40 } 41 42 template <typename T, precision P, template <typename, precision> class vecType> 43 GLM_FUNC_QUALIFIER vecType<bool, P> greaterThanEqual(vecType<T, P> const & x, vecType<T, P> const & y) 44 { 45 assert(x.length() == y.length()); 46 47 vecType<bool, P> Result(uninitialize); 48 for(length_t i = 0; i < x.length(); ++i) 49 Result[i] = x[i] >= y[i]; 50 return Result; 51 } 52 53 template <typename T, precision P, template <typename, precision> class vecType> 54 GLM_FUNC_QUALIFIER vecType<bool, P> equal(vecType<T, P> const & x, vecType<T, P> const & y) 55 { 56 assert(x.length() == y.length()); 57 58 vecType<bool, P> Result(uninitialize); 59 for(length_t i = 0; i < x.length(); ++i) 60 Result[i] = x[i] == y[i]; 61 return Result; 62 } 63 64 template <typename T, precision P, template <typename, precision> class vecType> 65 GLM_FUNC_QUALIFIER vecType<bool, P> notEqual(vecType<T, P> const & x, vecType<T, P> const & y) 66 { 67 assert(x.length() == y.length()); 68 69 vecType<bool, P> Result(uninitialize); 70 for(length_t i = 0; i < x.length(); ++i) 71 Result[i] = x[i] != y[i]; 72 return Result; 73 } 74 75 template <precision P, template <typename, precision> class vecType> 76 GLM_FUNC_QUALIFIER bool any(vecType<bool, P> const & v) 77 { 78 bool Result = false; 79 for(length_t i = 0; i < v.length(); ++i) 80 Result = Result || v[i]; 81 return Result; 82 } 83 84 template <precision P, template <typename, precision> class vecType> 85 GLM_FUNC_QUALIFIER bool all(vecType<bool, P> const & v) 86 { 87 bool Result = true; 88 for(length_t i = 0; i < v.length(); ++i) 89 Result = Result && v[i]; 90 return Result; 91 } 92 93 template <precision P, template <typename, precision> class vecType> 94 GLM_FUNC_QUALIFIER vecType<bool, P> not_(vecType<bool, P> const & v) 95 { 96 vecType<bool, P> Result(uninitialize); 97 for(length_t i = 0; i < v.length(); ++i) 98 Result[i] = !v[i]; 99 return Result; 100 } 101}//namespace glm 102 103#if GLM_ARCH != GLM_ARCH_PURE && GLM_HAS_UNRESTRICTED_UNIONS 104# include "func_vector_relational_simd.inl" 105#endif 106