diff --git a/include/bx/inline/math.inl b/include/bx/inline/math.inl index 8a0f517ed..8775849af 100644 --- a/include/bx/inline/math.inl +++ b/include/bx/inline/math.inl @@ -402,6 +402,16 @@ namespace bx inline BX_CONSTEXPR_FUNC float log(float _a) { + if (_a < 0.0f) + { + return bitsToFloat(kFloatSignMask | kFloatExponentMask | kFloatMantissaMask); + } + + if (_a == 0.0f) + { + return -kFloatInfinity; + } + const uint32_t ftob = floatToBits(_a); const uint32_t masked0 = uint32_and(ftob, kFloatExponentMask); @@ -465,6 +475,11 @@ namespace bx return 0.0f; } + if (isInfinite(_a) && _a < 0.0f) + { + return 0.0f; + } + constexpr float kExpC0 = 1.66666666666666019037e-01f; constexpr float kExpC1 = -2.77777777770155933842e-03f; constexpr float kExpC2 = 6.61375632143793436117e-05f;