void AxisAngleCompareMetricTest::testAxisAngleTimingIsEqualTest() { // Test overhead of creation const long iters(400000); gmtl::AxisAnglef src_quat11; gmtl::AxisAnglef src_quat22; gmtl::AxisAnglef src_quat33; gmtl::AxisAnglef src_quat34; gmtl::AxisAnglef src_quat44; gmtl::AxisAngled src_quat101; // half will be equal src_quat11[0] = 1.0f; src_quat22[1] = 1.0f; src_quat33[2] = 2.0f; gmtl::AxisAnglef test_quat11( src_quat11 ); gmtl::AxisAnglef test_quat22( src_quat22 ); gmtl::AxisAnglef test_quat33( src_quat33 ); gmtl::AxisAnglef test_quat34( src_quat34 ); gmtl::AxisAnglef test_quat44( src_quat44 ); gmtl::AxisAngled test_quat101( src_quat101 ); // half will be not equal src_quat34[0] = 23.0f; src_quat44[2] = 234.0f; src_quat101[3] = 1234.0f; unsigned true_count(0); CPPUNIT_METRIC_START_TIMING(); for( long iter=0;iter<iters; ++iter) { if (gmtl::isEqual( src_quat11, test_quat11, 0.0f )) ++true_count; if (gmtl::isEqual( src_quat22, test_quat22, 0.2f )) ++true_count; if (gmtl::isEqual( src_quat33, test_quat33, 0.3f )) ++true_count; if (gmtl::isEqual( src_quat34, test_quat34, 0.6f )) ++true_count; if (gmtl::isEqual( src_quat44, test_quat44, 0.8f )) ++true_count; /* if (gmtl::isEqual( src_quat101, test_quat101, 111.1f )) ++true_count; */ } CPPUNIT_METRIC_STOP_TIMING(); CPPUNIT_ASSERT_METRIC_TIMING_LE("AxisAngleCompareTest/isEqual(...)", iters, 0.075f, 0.1f); // warn at 7.5%, error at 10% // Make sure the compiler doesn't optimize out true_count CPPUNIT_ASSERT( true_count > 0 ); }
void QuatCompareMetricTest::testQuatTimingOpNotEqualityTest() { // Test overhead of creation const long iters(400000); gmtl::Quat<float> src_quat11; gmtl::Quat<float> src_quat22; gmtl::Quat<float> src_quat33; gmtl::Quat<float> src_quat34; gmtl::Quat<float> src_quat44; gmtl::Quat<double> src_quat101; // half will be equal src_quat11[0] = 1.0f; src_quat22[2] = 1.0f; src_quat33[3] = 2.0f; gmtl::Quat<float> test_quat11( src_quat11 ); gmtl::Quat<float> test_quat22( src_quat22 ); gmtl::Quat<float> test_quat33( src_quat33 ); gmtl::Quat<float> test_quat34( src_quat34 ); gmtl::Quat<float> test_quat44( src_quat44 ); gmtl::Quat<double> test_quat101( src_quat101 ); // half will be not equal src_quat34[0] = 2.0f; src_quat44[1] = 3.0f; src_quat101[3] = 1.0f; unsigned true_count(0); CPPUNIT_METRIC_START_TIMING(); for( long iter=0;iter<iters; ++iter) { if (src_quat11 != test_quat11) ++true_count; if (src_quat22 != test_quat22) ++true_count; if (src_quat33 != test_quat33) ++true_count; if (src_quat34 != test_quat34) ++true_count; if (src_quat44 != test_quat44) ++true_count; if (src_quat101 != test_quat101) ++true_count; } CPPUNIT_METRIC_STOP_TIMING(); CPPUNIT_ASSERT_METRIC_TIMING_LE("QuatCompareTest/operator!=", iters, 0.075f, 0.1f); // warn at 7.5%, error at 10% // Make sure the compiler doesn't optimize out true_count CPPUNIT_ASSERT( true_count > 0 ); }
void EulerAngleCompareMetricTest::testEulerAngleTimingOpEqualityTest() { // Test overhead of creation const long iters(400000); gmtl::EulerAngleXYZf src_quat11; gmtl::EulerAngleXYZf src_quat22; gmtl::EulerAngleXYZf src_quat33; gmtl::EulerAngleXYZf src_quat34; gmtl::EulerAngleXYZf src_quat44; gmtl::EulerAngleXYZd src_quat101; // half of them will be equal src_quat11[0] = 1.0f; src_quat22[2] = 1.0f; src_quat33[1] = 2.0f; gmtl::EulerAngleXYZf test_quat11( src_quat11 ); gmtl::EulerAngleXYZf test_quat22( src_quat22 ); gmtl::EulerAngleXYZf test_quat33( src_quat33 ); gmtl::EulerAngleXYZf test_quat34( src_quat34 ); gmtl::EulerAngleXYZf test_quat44( src_quat44 ); gmtl::EulerAngleXYZd test_quat101( src_quat101 ); // half will be not equal src_quat34[0] = 2.0f; src_quat44[1] = 3.0f; src_quat101[2] = 1.0; unsigned true_count(0); CPPUNIT_METRIC_START_TIMING(); for (long iter = 0; iter < iters; ++iter) { if (src_quat11 == test_quat11) ++true_count; if (src_quat22 == test_quat22) ++true_count; if (src_quat33 == test_quat33) ++true_count; if (src_quat34 == test_quat34) ++true_count; if (src_quat44 == test_quat44) ++true_count; if (src_quat101 == test_quat101) ++true_count; } CPPUNIT_METRIC_STOP_TIMING(); CPPUNIT_ASSERT_METRIC_TIMING_LE("EulerAngleCompareTest/operator==", iters, 0.075f, 0.1f); // warn at 7.5%, error at 10% // Make sure the compiler doesn't optimize out true_count CPPUNIT_ASSERT( true_count > 0 ); }
void QuatCompareMetricTest::testQuatTimingIsEqualTest() { // Test overhead of creation const long iters(400000); gmtl::Quat<float> src_quat11; gmtl::Quat<float> src_quat22; gmtl::Quat<float> src_quat33; gmtl::Quat<float> src_quat34; gmtl::Quat<float> src_quat44; gmtl::Quat<double> src_quat101; // half will be equal src_quat11[0] = 1.0f; src_quat22[1] = 1.0f; src_quat33[2] = 2.0f; gmtl::Quat<float> test_quat11( src_quat11 ); gmtl::Quat<float> test_quat22( src_quat22 ); gmtl::Quat<float> test_quat33( src_quat33 ); gmtl::Quat<float> test_quat34( src_quat34 ); gmtl::Quat<float> test_quat44( src_quat44 ); gmtl::Quat<double> test_quat101( src_quat101 ); // half will be not equal src_quat34[3] = 23.0f; src_quat44[2] = 234.0f; src_quat101[1] = 1234.0f; unsigned true_count(0); for( long iter=0;iter<iters; ++iter) { if (gmtl::isEqual( src_quat11, test_quat11, 0.0f )) ++true_count; if (gmtl::isEqual( src_quat22, test_quat22, 0.2f )) ++true_count; if (gmtl::isEqual( src_quat33, test_quat33, 0.3f )) ++true_count; if (gmtl::isEqual( src_quat34, test_quat34, 0.6f )) ++true_count; if (gmtl::isEqual( src_quat44, test_quat44, 0.8f )) ++true_count; if (gmtl::isEqual( src_quat101, test_quat101, double(111.1) )) ++true_count; } // Make sure the compiler doesn't optimize out true_count CPPUNIT_ASSERT( true_count > 0 ); }
void QuatCompareMetricTest::testQuatTimingOpNotEqualityTest() { // Test overhead of creation const long iters(400000); gmtl::Quat<float> src_quat11; gmtl::Quat<float> src_quat22; gmtl::Quat<float> src_quat33; gmtl::Quat<float> src_quat34; gmtl::Quat<float> src_quat44; gmtl::Quat<double> src_quat101; // half will be equal src_quat11[0] = 1.0f; src_quat22[2] = 1.0f; src_quat33[3] = 2.0f; gmtl::Quat<float> test_quat11( src_quat11 ); gmtl::Quat<float> test_quat22( src_quat22 ); gmtl::Quat<float> test_quat33( src_quat33 ); gmtl::Quat<float> test_quat34( src_quat34 ); gmtl::Quat<float> test_quat44( src_quat44 ); gmtl::Quat<double> test_quat101( src_quat101 ); // half will be not equal src_quat34[0] = 2.0f; src_quat44[1] = 3.0f; src_quat101[3] = 1.0f; unsigned true_count(0); for( long iter=0;iter<iters; ++iter) { if (src_quat11 != test_quat11) ++true_count; if (src_quat22 != test_quat22) ++true_count; if (src_quat33 != test_quat33) ++true_count; if (src_quat34 != test_quat34) ++true_count; if (src_quat44 != test_quat44) ++true_count; if (src_quat101 != test_quat101) ++true_count; } // Make sure the compiler doesn't optimize out true_count CPPUNIT_ASSERT( true_count > 0 ); }