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;