Fixed issue #182.

This commit is contained in:
Branimir Karadžić
2018-05-26 08:45:00 -07:00
parent e54cc99869
commit 38600c7ac6
2 changed files with 15 additions and 15 deletions

View File

@@ -179,6 +179,11 @@ namespace bx
return log(_a) * kInvLogNat2;
}
inline BX_CONST_FUNC float rsqrtRef(float _a)
{
return pow(_a, -0.5f);
}
inline BX_CONST_FUNC float sqrtRef(float _a)
{
if (_a < kNearZero)
@@ -186,7 +191,7 @@ namespace bx
return 0.0f;
}
return 1.0f/rsqrt(_a);
return 1.0f/rsqrtRef(_a);
}
inline BX_CONST_FUNC float sqrtSimd(float _a)
@@ -208,11 +213,6 @@ namespace bx
#endif // BX_CONFIG_SUPPORTS_SIMD
}
inline BX_CONST_FUNC float rsqrtRef(float _a)
{
return pow(_a, -0.5f);
}
inline BX_CONST_FUNC float rsqrtSimd(float _a)
{
if (_a < kNearZero)

View File

@@ -9,7 +9,7 @@
namespace bx
{
BX_CONST_FUNC float sqrt(float);
BX_CONST_FUNC float sqrtRef(float);
#define ELEMx 0
#define ELEMy 1
@@ -320,10 +320,10 @@ BX_SIMD128_IMPLEMENT_TEST(xyzw , 0xf);
BX_SIMD_FORCE_INLINE simd128_langext_t simd_sqrt(simd128_langext_t _a)
{
simd128_langext_t result;
result.vf[0] = sqrt(_a.vf[0]);
result.vf[1] = sqrt(_a.vf[1]);
result.vf[2] = sqrt(_a.vf[2]);
result.vf[3] = sqrt(_a.vf[3]);
result.vf[0] = sqrtRef(_a.vf[0]);
result.vf[1] = sqrtRef(_a.vf[1]);
result.vf[2] = sqrtRef(_a.vf[2]);
result.vf[3] = sqrtRef(_a.vf[3]);
return result;
}
@@ -331,10 +331,10 @@ BX_SIMD128_IMPLEMENT_TEST(xyzw , 0xf);
BX_SIMD_FORCE_INLINE simd128_langext_t simd_rsqrt_est(simd128_langext_t _a)
{
simd128_langext_t result;
result.vf[0] = 1.0f / sqrt(_a.vf[0]);
result.vf[1] = 1.0f / sqrt(_a.vf[1]);
result.vf[2] = 1.0f / sqrt(_a.vf[2]);
result.vf[3] = 1.0f / sqrt(_a.vf[3]);
result.vf[0] = 1.0f / sqrtRef(_a.vf[0]);
result.vf[1] = 1.0f / sqrtRef(_a.vf[1]);
result.vf[2] = 1.0f / sqrtRef(_a.vf[2]);
result.vf[3] = 1.0f / sqrtRef(_a.vf[3]);
return result;
}