preCICE v3.2.0
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
50{
52 Eigen::Vector3d vec0(1.0, 2.0, 3.0);
53 Eigen::Vector3d vec1(vec0);
54 BOOST_CHECK(equals(vec0, vec1));
55 BOOST_CHECK(not oneGreater(vec0, vec1));
56 BOOST_CHECK(oneGreaterEquals(vec0, vec1));
57 BOOST_CHECK(not allGreater(vec0, vec1));
58
59 vec0 << 2.0, 2.0, 3.0;
60 BOOST_CHECK(not equals(vec0, vec1));
61 BOOST_CHECK(oneGreater(vec0, vec1));
62 BOOST_CHECK(oneGreaterEquals(vec0, vec1));
63 BOOST_CHECK(not allGreater(vec0, vec1));
64
65 vec0 << 2.0, 3.0, 4.0;
66 BOOST_CHECK(not equals(vec0, vec1));
67 BOOST_CHECK(oneGreater(vec0, vec1));
68 BOOST_CHECK(oneGreaterEquals(vec0, vec1));
69 BOOST_CHECK(allGreater(vec0, vec1));
70
71 // up to here vec1=vec0
72 const double tolerance = 1e-14;
73 vec0(0) = vec1(0);
74 vec0(1) = vec1(1);
75 vec0(2) = vec1(2) + 0.99 * tolerance;
76 BOOST_CHECK(equals(vec0, vec1, tolerance));
77 BOOST_CHECK(not oneGreater(vec0, vec1, tolerance));
78 BOOST_CHECK(oneGreaterEquals(vec0, vec1));
79 BOOST_CHECK(not allGreater(vec0, vec1, tolerance));
80
81 vec0(2) = vec1(2) + 10.0 * tolerance;
82 BOOST_CHECK(not equals(vec0, vec1, tolerance));
83 BOOST_CHECK(oneGreater(vec0, vec1, tolerance));
84 BOOST_CHECK(oneGreaterEquals(vec0, vec1));
85 BOOST_CHECK(not allGreater(vec0, vec1, tolerance));
86
87 vec0 << 1.0, 2.0, 3.0;
88 vec0 = vec0.array() + (10.0 * tolerance);
89 BOOST_CHECK(not equals(vec0, vec1, tolerance));
90 BOOST_CHECK(oneGreater(vec0, vec1, tolerance));
91 BOOST_CHECK(oneGreaterEquals(vec0, vec1));
92 BOOST_CHECK(allGreater(vec0, vec1, tolerance));
93
94 vec0 << 1.0, 2.0, 3.0;
95 vec0 = vec0.array() - 0.99 * tolerance;
96 BOOST_CHECK(oneGreaterEquals(vec0, vec1));
97}
98
99BOOST_AUTO_TEST_SUITE_END() // Differences
100
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
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 oneGreaterEquals(const Eigen::MatrixBase< DerivedA > &A, const Eigen::MatrixBase< DerivedB > &B, double tolerance=math::NUMERICAL_ZERO_DIFFERENCE)
std::enable_if< std::is_arithmetic< Scalar >::value, bool >::type smallerEquals(Scalar A, Scalar B, Scalar tolerance=NUMERICAL_ZERO_DIFFERENCE)
std::enable_if< std::is_arithmetic< Scalar >::value, bool >::type greaterEquals(Scalar A, Scalar B, Scalar tolerance=NUMERICAL_ZERO_DIFFERENCE)
std::enable_if< std::is_arithmetic< Scalar >::value, bool >::type smaller(Scalar A, Scalar B, Scalar tolerance=NUMERICAL_ZERO_DIFFERENCE)
bool allGreater(const Eigen::MatrixBase< DerivedA > &A, const Eigen::MatrixBase< DerivedB > &B, double tolerance=math::NUMERICAL_ZERO_DIFFERENCE)
bool oneGreater(const Eigen::MatrixBase< DerivedA > &A, const Eigen::MatrixBase< DerivedB > &B, double tolerance=math::NUMERICAL_ZERO_DIFFERENCE)
std::enable_if< std::is_arithmetic< Scalar >::value, bool >::type greater(Scalar A, Scalar B, Scalar tolerance=NUMERICAL_ZERO_DIFFERENCE)
Main namespace of the precice library.