mirror of
https://github.com/BlackMATov/vmath.hpp.git
synced 2025-12-17 06:29:26 +07:00
scalar relational functions
This commit is contained in:
@@ -178,3 +178,52 @@ namespace vmath_hpp
|
|||||||
return T(k >= T(0)) * (eta * i - (eta * d + sqrt(k)) * n);
|
return T(k >= T(0)) * (eta * i - (eta * d + sqrt(k)) * n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Scalar Relational Functions
|
||||||
|
//
|
||||||
|
|
||||||
|
namespace vmath_hpp
|
||||||
|
{
|
||||||
|
template < typename T >
|
||||||
|
constexpr bool less(const T& x, const T& y) {
|
||||||
|
return x < y;
|
||||||
|
}
|
||||||
|
|
||||||
|
template < typename T >
|
||||||
|
constexpr bool less_equal(const T& x, const T& y) {
|
||||||
|
return x <= y;
|
||||||
|
}
|
||||||
|
|
||||||
|
template < typename T >
|
||||||
|
constexpr bool greater(const T& x, const T& y) {
|
||||||
|
return x > y;
|
||||||
|
}
|
||||||
|
|
||||||
|
template < typename T >
|
||||||
|
constexpr bool greater_equal(const T& x, const T& y) {
|
||||||
|
return x >= y;
|
||||||
|
}
|
||||||
|
|
||||||
|
template < typename T >
|
||||||
|
constexpr bool equal_to(const T& x, const T& y) {
|
||||||
|
return x == y;
|
||||||
|
}
|
||||||
|
|
||||||
|
template < typename T >
|
||||||
|
constexpr bool not_equal_to(const T& x, const T& y) {
|
||||||
|
return x != y;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool any(bool x) noexcept {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool all(bool x) noexcept {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool not_(bool x) noexcept {
|
||||||
|
return !x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -130,4 +130,31 @@ TEST_CASE("vmath/fun") {
|
|||||||
STATIC_REQUIRE(reflect(1.f, 2.f) == approx(-7.f));
|
STATIC_REQUIRE(reflect(1.f, 2.f) == approx(-7.f));
|
||||||
REQUIRE(refract(1.f, 2.f, 1.f) == approx(-7.f));
|
REQUIRE(refract(1.f, 2.f, 1.f) == approx(-7.f));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("Scalar Relational Functions") {
|
||||||
|
STATIC_REQUIRE(less(0, 1));
|
||||||
|
STATIC_REQUIRE(less_equal(0, 1));
|
||||||
|
STATIC_REQUIRE_FALSE(less(1, 1));
|
||||||
|
STATIC_REQUIRE(less_equal(1, 1));
|
||||||
|
|
||||||
|
STATIC_REQUIRE(greater(1, 0));
|
||||||
|
STATIC_REQUIRE(greater_equal(1, 0));
|
||||||
|
STATIC_REQUIRE_FALSE(greater(1, 1));
|
||||||
|
STATIC_REQUIRE(greater_equal(1, 1));
|
||||||
|
|
||||||
|
STATIC_REQUIRE_FALSE(equal_to(0, 1));
|
||||||
|
STATIC_REQUIRE(equal_to(1, 1));
|
||||||
|
|
||||||
|
STATIC_REQUIRE(not_equal_to(0, 1));
|
||||||
|
STATIC_REQUIRE_FALSE(not_equal_to(1, 1));
|
||||||
|
|
||||||
|
STATIC_REQUIRE_FALSE(any(false));
|
||||||
|
STATIC_REQUIRE(any(true));
|
||||||
|
|
||||||
|
STATIC_REQUIRE_FALSE(all(false));
|
||||||
|
STATIC_REQUIRE(all(true));
|
||||||
|
|
||||||
|
STATIC_REQUIRE_FALSE(not_(true));
|
||||||
|
STATIC_REQUIRE(not_(false));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user