mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 15:28:53 +08:00
tests: use __FLT_EPSILON__ in comparisons
This commit is contained in:
@@ -149,7 +149,7 @@ bool inv(const SquareMatrix<Type, M> & A, SquareMatrix<Type, M> & inv)
|
||||
for (size_t n = 0; n < M; n++) {
|
||||
|
||||
// if diagonal is zero, swap with row below
|
||||
if (fabs(static_cast<float>(U(n, n))) < 1e-8f) {
|
||||
if (fabs(static_cast<float>(U(n, n))) < __FLT_EPSILON__) {
|
||||
//printf("trying pivot for row %d\n",n);
|
||||
for (size_t i = n + 1; i < M; i++) {
|
||||
|
||||
@@ -174,7 +174,7 @@ bool inv(const SquareMatrix<Type, M> & A, SquareMatrix<Type, M> & inv)
|
||||
#endif
|
||||
|
||||
// failsafe, return zero matrix
|
||||
if (fabs(static_cast<float>(U(n, n))) < 1e-8f) {
|
||||
if (fabs(static_cast<float>(U(n, n))) < __FLT_EPSILON__) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -5,15 +5,15 @@ using namespace matrix;
|
||||
|
||||
int main()
|
||||
{
|
||||
TEST(fabs(wrap_pi(4.0) - (4.0 - 2*M_PI)) < 1e-5);
|
||||
TEST(fabs(wrap_pi(-4.0) - (-4.0 + 2*M_PI)) < 1e-5);
|
||||
TEST(fabs(wrap_pi(3.0) - (3.0)) < 1e-3);
|
||||
TEST(fabs(wrap_pi(4.0) - (4.0 - 2*M_PI)) < __FLT_EPSILON__);
|
||||
TEST(fabs(wrap_pi(-4.0) - (-4.0 + 2*M_PI)) < __FLT_EPSILON__);
|
||||
TEST(fabs(wrap_pi(3.0) - (3.0)) < __FLT_EPSILON__);
|
||||
TEST(!is_finite(wrap_pi(1000.0f)));
|
||||
TEST(!is_finite(wrap_pi(-1000.0f)));
|
||||
wrap_pi(NAN);
|
||||
|
||||
TEST(fabs(wrap_2pi(-4.0) - (-4.0 + 2*M_PI)) < 1e-5);
|
||||
TEST(fabs(wrap_2pi(3.0) - (3.0)) < 1e-3);
|
||||
TEST(fabs(wrap_2pi(-4.0) - (-4.0 + 2*M_PI)) < __FLT_EPSILON__);
|
||||
TEST(fabs(wrap_2pi(3.0) - (3.0)) < __FLT_EPSILON__);
|
||||
TEST(!is_finite(wrap_2pi(1000.0f)));
|
||||
TEST(!is_finite(wrap_2pi(-1000.0f)));
|
||||
wrap_2pi(NAN);
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ int main()
|
||||
SquareMatrix<float, 3> A(data);
|
||||
SquareMatrix<float, 3> A_I = inv(A);
|
||||
SquareMatrix<float, 3> A_I_check(data_check);
|
||||
TEST((A_I - A_I_check).abs().max() < 1e-5);
|
||||
TEST((A_I - A_I_check).abs().max() < 1e-6f);
|
||||
|
||||
// stess test
|
||||
SquareMatrix<float, n_large> A_large;
|
||||
@@ -63,7 +63,7 @@ int main()
|
||||
SquareMatrix<float, 9> A2(data2);
|
||||
SquareMatrix<float, 9> A2_I = inv(A2);
|
||||
SquareMatrix<float, 9> A2_I_check(data2_check);
|
||||
TEST((A2_I - A2_I_check).abs().max() < 1e-3);
|
||||
TEST((A2_I - A2_I_check).abs().max() < 1e-3f);
|
||||
float data3[9] = {
|
||||
0, 1, 2,
|
||||
3, 4, 5,
|
||||
|
||||
@@ -22,7 +22,7 @@ int main()
|
||||
Matrix3f m2(data);
|
||||
|
||||
for(int i=0; i<9; i++) {
|
||||
TEST(fabs(data[i] - m2.data()[i]) < 1e-6f);
|
||||
TEST(fabs(data[i] - m2.data()[i]) < __FLT_EPSILON__);
|
||||
}
|
||||
|
||||
Matrix3f m_nan;
|
||||
@@ -38,7 +38,7 @@ int main()
|
||||
};
|
||||
m2 = Matrix3f(data2d);
|
||||
for(int i=0; i<9; i++) {
|
||||
TEST(fabs(data[i] - m2.data()[i]) < 1e-6f);
|
||||
TEST(fabs(data[i] - m2.data()[i]) < __FLT_EPSILON__);
|
||||
}
|
||||
|
||||
float data_times_2[9] = {2, 4, 6, 8, 10, 12, 14, 16, 18};
|
||||
@@ -100,16 +100,16 @@ int main()
|
||||
m4.swapCols(2, 2);
|
||||
TEST(isEqual(m4, Matrix3f(data)));
|
||||
|
||||
TEST(fabs(m4.min() - 1) < 1e-5);
|
||||
TEST(fabs((-m4).min() + 9) < 1e-5);
|
||||
TEST(fabs(m4.min() - 1) < __FLT_EPSILON__);
|
||||
TEST(fabs((-m4).min() + 9) < __FLT_EPSILON__);
|
||||
|
||||
Scalar<float> s = 1;
|
||||
const Vector<float, 1> & s_vect = s;
|
||||
TEST(fabs(s - 1) < 1e-5);
|
||||
TEST(fabs(s_vect(0) - 1.0f) < 1e-5);
|
||||
TEST(fabs(s - 1) < __FLT_EPSILON__);
|
||||
TEST(fabs(s_vect(0) - 1.0f) < __FLT_EPSILON__);
|
||||
|
||||
Matrix<float, 1, 1> m5 = s;
|
||||
TEST(fabs(m5(0,0) - s) < 1e-5);
|
||||
TEST(fabs(m5(0,0) - s) < __FLT_EPSILON__);
|
||||
|
||||
Matrix<float, 2, 2> m6;
|
||||
m6.setRow(0, Vector2f(1, 2));
|
||||
|
||||
@@ -11,10 +11,10 @@ int main()
|
||||
for (size_t i = 0; i < 3; i++) {
|
||||
for (size_t j = 0; j < 3; j++) {
|
||||
if (i == j) {
|
||||
TEST(fabs(A(i, j) - 1) < 1e-7);
|
||||
TEST(fabs(A(i, j) - 1) < __FLT_EPSILON__);
|
||||
|
||||
} else {
|
||||
TEST(fabs(A(i, j) - 0) < 1e-7);
|
||||
TEST(fabs(A(i, j) - 0) < __FLT_EPSILON__);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,10 +25,10 @@ int main()
|
||||
for (size_t i = 0; i < 3; i++) {
|
||||
for (size_t j = 0; j < 3; j++) {
|
||||
if (i == j) {
|
||||
TEST(fabs(B(i, j) - 1) < 1e-7);
|
||||
TEST(fabs(B(i, j) - 1) < __FLT_EPSILON__);
|
||||
|
||||
} else {
|
||||
TEST(fabs(B(i, j) - 0) < 1e-7);
|
||||
TEST(fabs(B(i, j) - 0) < __FLT_EPSILON__);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ int main()
|
||||
Vector3<float> diag_check(1, 5, 10);
|
||||
|
||||
TEST(isEqual(A.diag(), diag_check));
|
||||
TEST(A.trace() - 16 < 1e-3);
|
||||
TEST(A.trace() - 16 < __FLT_EPSILON__);
|
||||
|
||||
float data_check[9] = {
|
||||
1.01158503f, 0.02190432f, 0.03238144f,
|
||||
@@ -25,7 +25,7 @@ int main()
|
||||
float dt = 0.01f;
|
||||
SquareMatrix<float, 3> eA = expm(SquareMatrix<float, 3>(A*dt), 5);
|
||||
SquareMatrix<float, 3> eA_check(data_check);
|
||||
TEST((eA - eA_check).abs().max() < 1e-3);
|
||||
TEST((eA - eA_check).abs().max() < 1e-3f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -75,9 +75,9 @@ psi = 0.3
|
||||
print('euler', phi, theta, psi)
|
||||
|
||||
q = euler_to_quat(phi, theta, psi)
|
||||
assert(abs(norm(q) - 1) < 1e-10)
|
||||
assert(abs(norm(q) - 1) < 1e-10)
|
||||
assert(norm(array(quat_to_euler(q)) - array([phi, theta, psi])) < 1e-10)
|
||||
assert(abs(norm(q) - 1) < __FLT_EPSILON__)
|
||||
assert(abs(norm(q) - 1) < __FLT_EPSILON__)
|
||||
assert(norm(array(quat_to_euler(q)) - array([phi, theta, psi])) < __FLT_EPSILON__)
|
||||
print('\nq:')
|
||||
pprint(q)
|
||||
|
||||
@@ -85,8 +85,8 @@ dcm = euler_to_dcm(phi, theta, psi)
|
||||
assert(norm(dcm[:,0]) == 1)
|
||||
assert(norm(dcm[:,1]) == 1)
|
||||
assert(norm(dcm[:,2]) == 1)
|
||||
assert(abs(dcm[:,0].dot(dcm[:,1])) < 1e-10)
|
||||
assert(abs(dcm[:,0].dot(dcm[:,2])) < 1e-10)
|
||||
assert(abs(dcm[:,0].dot(dcm[:,1])) < __FLT_EPSILON__)
|
||||
assert(abs(dcm[:,0].dot(dcm[:,2])) < __FLT_EPSILON__)
|
||||
print('\ndcm:')
|
||||
pprint(dcm)
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include <cstdio>
|
||||
#include <cmath> // cmath has to be introduced BEFORE we poison the C library identifiers
|
||||
#include "float.h"
|
||||
|
||||
#define TEST(X) if(!(X)) { fprintf(stderr, "test failed on %s:%d\n", __FILE__, __LINE__); return -1;}
|
||||
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ int main()
|
||||
SquareMatrix<float, 3> A(data);
|
||||
|
||||
for(int i=0; i<6; i++) {
|
||||
TEST(fabs(urt[i] - A.urt().data()[i]) < 1e-6f);
|
||||
TEST(fabs(urt[i] - A.urt().data()[i]) < __FLT_EPSILON__);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
+11
-11
@@ -10,29 +10,29 @@ int main()
|
||||
{
|
||||
Vector2f a(1, 0);
|
||||
Vector2f b(0, 1);
|
||||
TEST(fabs(a % b - 1.0f) < 1e-5);
|
||||
TEST(fabs(a % b - 1.0f) < __FLT_EPSILON__);
|
||||
|
||||
Vector2f c;
|
||||
TEST(fabs(c(0) - 0) < 1e-5);
|
||||
TEST(fabs(c(1) - 0) < 1e-5);
|
||||
TEST(fabs(c(0) - 0) < __FLT_EPSILON__);
|
||||
TEST(fabs(c(1) - 0) < __FLT_EPSILON__);
|
||||
|
||||
Matrix<float, 2, 1> d(a);
|
||||
TEST(fabs(d(0,0) - 1) < 1e-5);
|
||||
TEST(fabs(d(1,0) - 0) < 1e-5);
|
||||
TEST(fabs(d(0,0) - 1) < __FLT_EPSILON__);
|
||||
TEST(fabs(d(1,0) - 0) < __FLT_EPSILON__);
|
||||
|
||||
Vector2f e(d);
|
||||
TEST(fabs(e(0) - 1) < 1e-5);
|
||||
TEST(fabs(e(1) - 0) < 1e-5);
|
||||
TEST(fabs(e(0) - 1) < __FLT_EPSILON__);
|
||||
TEST(fabs(e(1) - 0) < __FLT_EPSILON__);
|
||||
|
||||
float data[] = {4,5};
|
||||
Vector2f f(data);
|
||||
TEST(fabs(f(0) - 4) < 1e-5);
|
||||
TEST(fabs(f(1) - 5) < 1e-5);
|
||||
TEST(fabs(f(0) - 4) < __FLT_EPSILON__);
|
||||
TEST(fabs(f(1) - 5) < __FLT_EPSILON__);
|
||||
|
||||
Vector3f g(1.23f, 423.4f, 3221.f);
|
||||
Vector2f h(g);
|
||||
TEST(fabs(h(0) - 1.23f) < 1e-5);
|
||||
TEST(fabs(h(1) - 423.4f) < 1e-5);
|
||||
TEST(fabs(h(0) - 1.23f) < __FLT_EPSILON__);
|
||||
TEST(fabs(h(1) - 423.4f) < __FLT_EPSILON__);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user