Use our own constants instead of M_PI, M_*, etc. (#1733)
These constants are not part of the standard. We instead use our own constexpr definitions in the filament::math namespace, as part of the scalar.h include.
This commit is contained in:
@@ -14,11 +14,10 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <math/fast.h>
|
||||
#include <math/scalar.h>
|
||||
|
||||
using namespace filament::math;
|
||||
|
||||
@@ -27,48 +26,47 @@ protected:
|
||||
};
|
||||
|
||||
TEST_F(FastTest, Trig) {
|
||||
constexpr float sqrt1_2f = (float)M_SQRT1_2;
|
||||
constexpr double sqrt1_2d = M_SQRT1_2;
|
||||
constexpr float sqrt1_2f = (float) F_SQRT1_2;
|
||||
constexpr double sqrt1_2d = F_SQRT1_2;
|
||||
constexpr float abs_error = 0.002f; // 0.2%
|
||||
|
||||
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::sin<float>(-M_PI));
|
||||
EXPECT_NEAR (-sqrt1_2f, fast::sin<float>(-M_PI_2 - M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::sin<float>(-M_PI_2));
|
||||
EXPECT_NEAR (-sqrt1_2f, fast::sin<float>(-M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::sin<float>(-F_PI));
|
||||
EXPECT_NEAR (-sqrt1_2f, fast::sin<float>(-F_PI_2 - F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::sin<float>(-F_PI_2));
|
||||
EXPECT_NEAR (-sqrt1_2f, fast::sin<float>(-F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::sin<float>(0.0));
|
||||
EXPECT_NEAR ( sqrt1_2f, fast::sin<float>(M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 1.0f, fast::sin<float>(M_PI_2));
|
||||
EXPECT_NEAR ( sqrt1_2f, fast::sin<float>(M_PI_2 + M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::sin<float>(M_PI));
|
||||
EXPECT_NEAR ( sqrt1_2f, fast::sin<float>(F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 1.0f, fast::sin<float>(F_PI_2));
|
||||
EXPECT_NEAR ( sqrt1_2f, fast::sin<float>(F_PI_2 + F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::sin<float>(F_PI));
|
||||
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::cos<float>(-M_PI));
|
||||
EXPECT_NEAR (-sqrt1_2f, fast::cos<float>(-M_PI_2 - M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::cos<float>(-M_PI_2));
|
||||
EXPECT_NEAR (sqrt1_2f, fast::cos<float>(-M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::cos<float>(-F_PI));
|
||||
EXPECT_NEAR (-sqrt1_2f, fast::cos<float>(-F_PI_2 - F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::cos<float>(-F_PI_2));
|
||||
EXPECT_NEAR (sqrt1_2f, fast::cos<float>(-F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 1.0f, fast::cos<float>(0.0));
|
||||
EXPECT_NEAR (sqrt1_2f, fast::cos<float>(M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::cos<float>(M_PI_2));
|
||||
EXPECT_NEAR (-sqrt1_2f, fast::cos<float>(M_PI_2 + M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::cos<float>(M_PI));
|
||||
EXPECT_NEAR (sqrt1_2f, fast::cos<float>(F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::cos<float>(F_PI_2));
|
||||
EXPECT_NEAR (-sqrt1_2f, fast::cos<float>(F_PI_2 + F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::cos<float>(F_PI));
|
||||
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::sin<double>(-M_PI));
|
||||
EXPECT_NEAR (-sqrt1_2d, fast::sin<double>(-M_PI_2 - M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::sin<double>(-M_PI_2));
|
||||
EXPECT_NEAR (-sqrt1_2d, fast::sin<double>(-M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::sin<double>(-F_PI));
|
||||
EXPECT_NEAR (-sqrt1_2d, fast::sin<double>(-F_PI_2 - F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::sin<double>(-F_PI_2));
|
||||
EXPECT_NEAR (-sqrt1_2d, fast::sin<double>(-F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::sin<double>(0.0));
|
||||
EXPECT_NEAR ( sqrt1_2d, fast::sin<double>(M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 1.0f, fast::sin<double>(M_PI_2));
|
||||
EXPECT_NEAR ( sqrt1_2d, fast::sin<double>(M_PI_2 + M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::sin<double>(M_PI));
|
||||
EXPECT_NEAR ( sqrt1_2d, fast::sin<double>(F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 1.0f, fast::sin<double>(F_PI_2));
|
||||
EXPECT_NEAR ( sqrt1_2d, fast::sin<double>(F_PI_2 + F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::sin<double>(F_PI));
|
||||
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::cos<double>(-M_PI));
|
||||
EXPECT_NEAR (-sqrt1_2d, fast::cos<double>(-M_PI_2 - M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::cos<double>(-M_PI_2));
|
||||
EXPECT_NEAR (sqrt1_2d, fast::cos<double>(-M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::cos<double>(-F_PI));
|
||||
EXPECT_NEAR (-sqrt1_2d, fast::cos<double>(-F_PI_2 - F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::cos<double>(-F_PI_2));
|
||||
EXPECT_NEAR (sqrt1_2d, fast::cos<double>(-F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 1.0f, fast::cos<double>(0.0));
|
||||
EXPECT_NEAR (sqrt1_2d, fast::cos<double>(M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::cos<double>(M_PI_2));
|
||||
EXPECT_NEAR (-sqrt1_2d, fast::cos<double>(M_PI_2 + M_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::cos<double>(M_PI));
|
||||
EXPECT_NEAR (sqrt1_2d, fast::cos<double>(F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ( 0.0f, fast::cos<double>(F_PI_2));
|
||||
EXPECT_NEAR (-sqrt1_2d, fast::cos<double>(F_PI_2 + F_PI_4), abs_error);
|
||||
EXPECT_FLOAT_EQ(-1.0f, fast::cos<double>(F_PI));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user