preCICE
Loading...
Searching...
No Matches
DifferencesTest.cpp
Go to the documentation of this file.
1#include <Eigen/Core>
3#include "math/constants.hpp"
6#include "testing/Testing.hpp"
7
8using namespace precice;
9using namespace precice::math;
10
11BOOST_AUTO_TEST_SUITE(MathTests)
12BOOST_AUTO_TEST_SUITE(Differences)
13
16{
18 double a = 1.0;
19 double b = 2.0;
20 double eps = 1e-14;
21
22 BOOST_CHECK(greater(b, a, eps));
23 BOOST_CHECK(not greater(a, a - eps, eps));
24 BOOST_CHECK(greater(a, a - 10.0 * eps, eps));
25
26 BOOST_CHECK(not greaterEquals(a, b, eps));
27 BOOST_CHECK(greaterEquals(b, a, eps));
28 BOOST_CHECK(greaterEquals(a, a, eps));
29 BOOST_CHECK(greaterEquals(a, a + 0.1 * eps, eps));
30 BOOST_CHECK(not greaterEquals(a, a + 10 * eps, eps));
31
32 BOOST_CHECK(smaller(a, b, eps));
33 BOOST_CHECK(not smaller(a, a + eps, eps));
34 BOOST_CHECK(smaller(a, a + 10.0 * eps, eps));
35
36 BOOST_CHECK(smallerEquals(a, b, eps));
37 BOOST_CHECK(smallerEquals(a, a + eps, eps));
38 BOOST_CHECK(smallerEquals(a + eps, a, eps));
39 BOOST_CHECK(smallerEquals(a, a + 10.0 * eps, eps));
40
41 BOOST_CHECK(not equals(a, b, eps));
42 BOOST_CHECK(equals(a, a, eps));
43 BOOST_CHECK(equals(a, a + eps, eps));
44 BOOST_CHECK(not equals(a, a + 10.0 * eps, eps));
45 BOOST_CHECK(equals(a, a + 10.0 * eps, 10.0 * eps));
46
47 BOOST_CHECK(isZero(0.0));
48 BOOST_CHECK(!isZero(eps * 2));
49 BOOST_CHECK(!isZero(eps * 2, eps));
50 BOOST_CHECK(isZero(eps / 2, eps));
51 BOOST_CHECK(!isZero(1.0));
52}
53
56{
58 Eigen::Vector3d vec0(1.0, 2.0, 3.0);
59 Eigen::Vector3d vec1(vec0);
60 BOOST_CHECK(equals(vec0, vec1));
61
62 vec0 << 2.0, 2.0, 3.0;
63 BOOST_CHECK(not equals(vec0, vec1));
64
65 vec0 << 2.0, 3.0, 4.0;
66 BOOST_CHECK(not equals(vec0, vec1));
67
68 // up to here vec1=vec0
69 const double tolerance = 1e-14;
70 vec0(0) = vec1(0);
71 vec0(1) = vec1(1);
72 vec0(2) = vec1(2) + 0.99 * tolerance;
73 BOOST_CHECK(equals(vec0, vec1, tolerance));
74
75 vec0(2) = vec1(2) + 10.0 * tolerance;
76 BOOST_CHECK(not equals(vec0, vec1, tolerance));
77
78 vec0 << 1.0, 2.0, 3.0;
79 vec0 = vec0.array() + (10.0 * tolerance);
80 BOOST_CHECK(not equals(vec0, vec1, tolerance));
81
82 vec0 << 1.0, 2.0, 3.0;
83 vec0 = vec0.array() - 0.99 * tolerance;
84}
85
86BOOST_AUTO_TEST_SUITE_END() // Differences
87
BOOST_AUTO_TEST_CASE(testIQNIMVJPPWithSubsteps)
BOOST_AUTO_TEST_SUITE(PreProcess)
BOOST_AUTO_TEST_SUITE_END()
#define PRECICE_TEST()
Definition Testing.hpp:39
#define PRECICE_TEST_SETUP(...)
Creates and attaches a TestSetup to a Boost test case.
Definition Testing.hpp:29
provides general mathematical constants and functions.
Definition barycenter.cpp:9
bool smallerEquals(double a, double b, double tolerance=NUMERICAL_ZERO_DIFFERENCE) noexcept
constexpr bool equals(const Eigen::MatrixBase< DerivedA > &A, const Eigen::MatrixBase< DerivedB > &B, double tolerance=NUMERICAL_ZERO_DIFFERENCE)
Compares two Eigen::MatrixBase for equality up to tolerance.
bool greaterEquals(double a, double b, double tolerance=NUMERICAL_ZERO_DIFFERENCE) noexcept
bool greater(double a, double b, double tolerance=NUMERICAL_ZERO_DIFFERENCE) noexcept
bool isZero(double a, double tolerance=NUMERICAL_ZERO_DIFFERENCE) noexcept
bool smaller(double a, double b, double tolerance=NUMERICAL_ZERO_DIFFERENCE) noexcept
Main namespace of the precice library.