20#ifndef COMMON_UTIL_NUMERIC_CMP
21#define COMMON_UTIL_NUMERIC_CMP
73 T diff = std::fabs(value1 - value2);
75 T scale =
std::max(std::fabs(value1), std::fabs(value2));
77 if (diff > scale * rel_eps) {
91 bool vector_equal(
const std::vector<T>& v1,
const std::vector<T>& v2, T abs_eps, T rel_eps) {
92 if (v1.size() != v2.size()) {
96 for (
size_t i = 0; i < v1.size(); i++) {
97 if (!scalar_equal<T>( v1[i], v2[i], abs_eps, rel_eps ))
105 bool vector_equal(
const std::vector<T>& v1,
const std::vector<T>& v2) {
111 bool array_equal(
const T* p1,
const T* p2,
size_t num_elements, T abs_eps, T rel_eps) {
112 if (memcmp(p1 , p2 , num_elements *
sizeof * p1) == 0)
117 if (!scalar_equal<T>( p1[
index] , p2[
index] , abs_eps , rel_eps)) {
int index
Definition: cJSON.h:168
bool cmp(const ESmry &esmr, const ERsm &ersm)
bool vector_equal(const std::vector< T > &v1, const std::vector< T > &v2, T abs_eps, T rel_eps)
Definition: cmp.hpp:91
const double default_abs_epsilon
Definition: cmp.hpp:65
bool array_equal(const T *p1, const T *p2, size_t num_elements, T abs_eps, T rel_eps)
Definition: cmp.hpp:111
const double default_rel_epsilon
Definition: cmp.hpp:66
bool scalar_equal(T value1, T value2, T abs_eps, T rel_eps)
Definition: cmp.hpp:69
static const double e
Definition: exprtk.hpp:758
T equal(const T v0, const T v1)
Definition: exprtk.hpp:1414
T max(const T v0, const T v1)
Definition: exprtk.hpp:1407
T value(details::expression_node< T > *n)
Definition: exprtk.hpp:12955