NumCpp  2.12.1
A Templatized Header Only C++ Implementation of the Python NumPy Library
essentiallyEqual.hpp
Go to the documentation of this file.
1
28#pragma once
29
30#include <cmath>
31#include <complex>
32#include <string>
33
36
37namespace nc::utils
38{
39 //============================================================================
40 // Method Description:
48 template<typename dtype, std::enable_if_t<std::is_integral<dtype>::value, int> = 0>
49 bool essentiallyEqual(dtype inValue1, dtype inValue2) noexcept
50 {
51 return inValue1 == inValue2;
52 }
53
54 //============================================================================
55 // Method Description:
64 template<typename dtype, std::enable_if_t<std::is_floating_point<dtype>::value, int> = 0>
65 bool essentiallyEqual(dtype inValue1, dtype inValue2, dtype inEpsilon) noexcept
66 {
67 const auto absValue1 = std::abs(inValue1);
68 const auto absValue2 = std::abs(inValue2);
69 return std::abs(inValue1 - inValue2) <= ((absValue1 > absValue2 ? absValue2 : absValue1) * std::abs(inEpsilon));
70 }
71
72 //============================================================================
73 // Method Description:
81 template<typename dtype, std::enable_if_t<std::is_floating_point<dtype>::value, int> = 0>
82 bool essentiallyEqual(dtype inValue1, dtype inValue2) noexcept
83 {
84 return essentiallyEqual(inValue1, inValue2, DtypeInfo<dtype>::epsilon());
85 }
86} // namespace nc::utils
Holds info about the dtype.
Definition: DtypeInfo.hpp:41
Definition: Utils/cube.hpp:33
bool essentiallyEqual(dtype inValue1, dtype inValue2) noexcept
Definition: essentiallyEqual.hpp:49
auto abs(dtype inValue) noexcept
Definition: abs.hpp:49