mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-17 20:52:37 +01:00
Fixed bx::sign function to return tri-state result.
This commit is contained in:
@@ -135,7 +135,7 @@ namespace bx
|
||||
|
||||
inline BX_CONSTEXPR_FUNC float sign(float _a)
|
||||
{
|
||||
return _a < 0.0f ? -1.0f : 1.0f;
|
||||
return (0.0f < _a) - (0.0f > _a);
|
||||
}
|
||||
|
||||
inline BX_CONSTEXPR_FUNC float abs(float _a)
|
||||
|
||||
@@ -205,7 +205,11 @@ namespace bx
|
||||
///
|
||||
BX_CONSTEXPR_FUNC float invLerp(float _a, float _b, float _value);
|
||||
|
||||
/// Returns the sign of _a.
|
||||
/// Extracts the sign of value `_a`.
|
||||
///
|
||||
/// @param[in] _a Value.
|
||||
///
|
||||
/// @returns -1 if `_a` less than zero, 0 if `_a` is equal to 0, or +1 if `_a` is greater than zero.
|
||||
///
|
||||
BX_CONSTEXPR_FUNC float sign(float _a);
|
||||
|
||||
|
||||
@@ -210,6 +210,13 @@ TEST_CASE("libm", "")
|
||||
REQUIRE(bx::isEqual(bx::atan2(0.0f, 0.0f), ::atan2f(0.0f, 0.0f), 0.00001f) );
|
||||
}
|
||||
|
||||
TEST_CASE("sign", "")
|
||||
{
|
||||
REQUIRE(-1 == bx::sign(-0.1389f) );
|
||||
REQUIRE( 0 == bx::sign( 0.0000f) );
|
||||
REQUIRE( 1 == bx::sign( 0.1389f) );
|
||||
}
|
||||
|
||||
TEST_CASE("ToBits", "")
|
||||
{
|
||||
REQUIRE(UINT32_C(0x12345678) == bx::floatToBits( bx::bitsToFloat( UINT32_C(0x12345678) ) ) );
|
||||
|
||||
Reference in New Issue
Block a user