30 std::vector<double> scales;
31 scales.push_back(1.0);
32 scales.push_back(100.0);
33 scales.push_back(0.01);
34 scales.push_back(1.0e-28);
35 scales.push_back(1.0e+28);
37 std::vector<double> numbers;
38 numbers.push_back(one);
39 numbers.push_back(
PI);
41 for (
auto& s : scales) {
42 out <<
" *****************************" << std::endl;
43 out <<
" s, eps = " << s <<
", " <<
eps << std::endl;
45 TEST_COMPARE(approxEqual(zero * s, (zero - 10.0 *
eps) * s), ==,
false);
46 TEST_COMPARE(approxEqual(zero * s, (zero -
eps) * s), ==,
false);
47 TEST_COMPARE(approxEqual(zero * s, (zero)*s), ==,
true);
48 TEST_COMPARE(approxEqual(zero * s, (zero +
eps) * s), ==,
false);
49 TEST_COMPARE(approxEqual(zero * s, (zero + 10.0 *
eps) * s), ==,
false);
52 TEST_COMPARE(approxEqual((zero - 10.0 *
eps) * s, zero * s), ==,
false);
53 TEST_COMPARE(approxEqual((zero -
eps) * s, zero * s), ==,
false);
54 TEST_COMPARE(approxEqual((zero)*s, zero * s), ==,
true);
55 TEST_COMPARE(approxEqual((zero +
eps) * s, zero * s), ==,
false);
56 TEST_COMPARE(approxEqual((zero + 10.0 *
eps) * s, zero * s), ==,
false);
58 for (
auto& n : numbers) {
59 out <<
" n = " << n << std::endl;
61 TEST_COMPARE(approxEqual(n * s, (n - 10.0 *
eps) * s), ==,
false);
62 TEST_COMPARE(approxEqual(n * s, (n -
eps) * s), ==,
true);
63 TEST_COMPARE(approxEqual(n * s, (n)*s), ==,
true);
64 TEST_COMPARE(approxEqual(n * s, (n +
eps) * s), ==,
true);
65 TEST_COMPARE(approxEqual(n * s, (n + 10.0 *
eps) * s), ==,
false);
68 TEST_COMPARE(approxEqual((n - 10.0 *
eps) * s, n * s), ==,
false);
69 TEST_COMPARE(approxEqual((n -
eps) * s, n * s), ==,
true);
70 TEST_COMPARE(approxEqual((n)*s, n * s), ==,
true);
71 TEST_COMPARE(approxEqual((n +
eps) * s, n * s), ==,
true);
72 TEST_COMPARE(approxEqual((n + 10.0 *
eps) * s, n * s), ==,
false);
74 out <<
" *****************************" << std::endl;
82 double numTol = Tempus::numericalTol<double>();
86 std::vector<double> scales;
87 scales.push_back(1.0);
88 scales.push_back(100.0);
89 scales.push_back(0.01);
90 scales.push_back(1.0e-28);
91 scales.push_back(1.0e+28);
93 std::vector<double> numbers;
94 numbers.push_back(zero);
95 numbers.push_back(one);
96 numbers.push_back(
PI);
98 for (
auto& s : scales) {
99 for (
auto& n : numbers) {
100 out <<
" *****************************" << std::endl;
101 out <<
" n, s, eps = " << n <<
", " << s <<
", " <<
eps << std::endl;
103 TEST_COMPARE(approxEqualAbsTol(n * s, (n - 10.0 *
eps) * s, numTol * s),
105 TEST_COMPARE(approxEqualAbsTol(n * s, (n -
eps) * s, numTol * s), ==,
107 TEST_COMPARE(approxEqualAbsTol(n * s, (n)*s, numTol * s), ==,
true);
108 TEST_COMPARE(approxEqualAbsTol(n * s, (n +
eps) * s, numTol * s), ==,
110 TEST_COMPARE(approxEqualAbsTol(n * s, (n + 10.0 *
eps) * s, numTol * s),
114 TEST_COMPARE(approxEqualAbsTol((n - 10.0 *
eps) * s, n * s, numTol * s),
116 TEST_COMPARE(approxEqualAbsTol((n -
eps) * s, n * s, numTol * s), ==,
118 TEST_COMPARE(approxEqualAbsTol((n)*s, n * s, numTol * s), ==,
true);
119 TEST_COMPARE(approxEqualAbsTol((n +
eps) * s, n * s, numTol * s), ==,
121 TEST_COMPARE(approxEqualAbsTol((n + 10.0 *
eps) * s, n * s, numTol * s),
124 out <<
" *****************************" << std::endl;
136 std::vector<double> scales;
137 scales.push_back(1.0);
138 scales.push_back(100.0);
139 scales.push_back(0.01);
140 scales.push_back(1.0e-28);
141 scales.push_back(1.0e+28);
143 std::vector<double> numbers;
144 numbers.push_back(zero);
145 numbers.push_back(one);
146 numbers.push_back(
PI);
148 for (
auto& s : scales) {
149 for (
auto& n : numbers) {
150 out <<
" *****************************" << std::endl;
151 out <<
" n, s, eps = " << n <<
", " << s <<
", " <<
eps << std::endl;
153 TEST_COMPARE(approxEqualScale(n * s, (n - 10.0 *
eps) * s, s), ==,
false);
154 TEST_COMPARE(approxEqualScale(n * s, (n -
eps) * s, s), ==,
true);
155 TEST_COMPARE(approxEqualScale(n * s, (n)*s, s), ==,
true);
156 TEST_COMPARE(approxEqualScale(n * s, (n +
eps) * s, s), ==,
true);
157 TEST_COMPARE(approxEqualScale(n * s, (n + 10.0 *
eps) * s, s), ==,
false);
160 TEST_COMPARE(approxEqualScale((n - 10.0 *
eps) * s, n * s, s), ==,
false);
161 TEST_COMPARE(approxEqualScale((n -
eps) * s, n * s, s), ==,
true);
162 TEST_COMPARE(approxEqualScale((n)*s, n * s, s), ==,
true);
163 TEST_COMPARE(approxEqualScale((n +
eps) * s, n * s, s), ==,
true);
164 TEST_COMPARE(approxEqualScale((n + 10.0 *
eps) * s, n * s, s), ==,
false);
166 out <<
" *****************************" << std::endl;