libimgdoc2
Loading...
Searching...
No Matches
utilities.h
1// SPDX-FileCopyrightText: 2023 Carl Zeiss Microscopy GmbH
2//
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
7#include <cmath>
8
9namespace imgdoc2
10{
19 template <typename t>
20 inline bool approximatelyEqual(t a, t b, t epsilon)
21 {
22 return std::fabs(a - b) <= ((std::fabs(a) < std::fabs(b) ? std::fabs(b) : std::fabs(a)) * epsilon);
23 }
24
33 template <typename t>
34 inline bool essentiallyEqual(t a, t b, t epsilon)
35 {
36 return std::fabs(a - b) <= ((std::fabs(a) > std::fabs(b) ? std::fabs(b) : std::fabs(a)) * epsilon);
37 }
38
45 template <typename t>
46 inline bool definitelyGreaterThan(t a, t b, t epsilon)
47 {
48 return (a - b) > ((std::fabs(a) < std::fabs(b) ? std::fabs(b) : std::fabs(a)) * epsilon);
49 }
50
57 template <typename t>
58 inline bool definitelyLessThan(t a, t b, t epsilon)
59 {
60 return (b - a) > ((std::fabs(a) < std::fabs(b) ? std::fabs(b) : std::fabs(a)) * epsilon);
61 }
62
63}