SA_Maths
Sapphire Suite's C++ Maths Library
Loading...
Searching...
No Matches
Equals.hpp
Go to the documentation of this file.
1// Copyright (c) 2023 Sapphire development team. All Rights Reserved.
2
3#pragma once
4
5#ifndef SAPPHIRE_MATHS_EQUALS_GUARD
6#define SAPPHIRE_MATHS_EQUALS_GUARD
7
8#include <limits>
9
20namespace SA
21{
22 namespace Maths
23 {
36 template <typename T, typename EpsT = T>
37 constexpr bool Equals(const T& _lhs, const T& _rhs, EpsT _epsilon = std::numeric_limits<EpsT>::epsilon())
38 {
39 // Don't use std::abs for unsigned compatibility.
40
41 return (_lhs < _rhs ? _rhs - _lhs : _lhs - _rhs) <= _epsilon;
42 }
43
44
56 template <typename T, typename EpsT = T>
57 constexpr bool Equals0(T _in, EpsT _epsilon = std::numeric_limits<EpsT>::epsilon()) noexcept
58 {
59 return Equals(_in, T{ 0 }, _epsilon);
60 }
61
62
74 template <typename T, typename EpsT = T>
75 constexpr bool Equals1(T _in, EpsT _epsilon = std::numeric_limits<EpsT>::epsilon()) noexcept
76 {
77 return Equals(_in, T{ 1 }, _epsilon);
78 }
79 }
80}
81
90#endif // GUARD
constexpr bool Equals0(T _in, EpsT _epsilon=std::numeric_limits< EpsT >::epsilon()) noexcept
Compare one T to T(0).
Definition Equals.hpp:57
constexpr bool Equals(const T &_lhs, const T &_rhs, EpsT _epsilon=std::numeric_limits< EpsT >::epsilon())
Compare two T objects.
Definition Equals.hpp:37
constexpr bool Equals1(T _in, EpsT _epsilon=std::numeric_limits< EpsT >::epsilon()) noexcept
Compare one T to T(1).
Definition Equals.hpp:75