xref: /aosp_15_r20/external/armnn/include/armnnUtils/FloatingPointComparison.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #pragma once
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker #include <cmath>
9*89c4ff92SAndroid Build Coastguard Worker 
10*89c4ff92SAndroid Build Coastguard Worker namespace armnnUtils
11*89c4ff92SAndroid Build Coastguard Worker {
12*89c4ff92SAndroid Build Coastguard Worker 
13*89c4ff92SAndroid Build Coastguard Worker /**
14*89c4ff92SAndroid Build Coastguard Worker  * Compare two floats and return true if their values are within a specified tolerance of each other.
15*89c4ff92SAndroid Build Coastguard Worker  * @param a
16*89c4ff92SAndroid Build Coastguard Worker  * @param b
17*89c4ff92SAndroid Build Coastguard Worker  * @param tolerancePercentage If not supplied default will be 1% tolerance (1.0f)
18*89c4ff92SAndroid Build Coastguard Worker  * @return true if the value of float b is within tolerancePercentage of the value for float a.
19*89c4ff92SAndroid Build Coastguard Worker  */
within_percentage_tolerance(float a,float b,float tolerancePercent=1.0f)20*89c4ff92SAndroid Build Coastguard Worker inline bool within_percentage_tolerance(float a, float b, float tolerancePercent = 1.0f)
21*89c4ff92SAndroid Build Coastguard Worker {
22*89c4ff92SAndroid Build Coastguard Worker     float toleranceValue = std::fabs(a * (tolerancePercent / 100));
23*89c4ff92SAndroid Build Coastguard Worker     return std::fabs(a - b) <= toleranceValue;
24*89c4ff92SAndroid Build Coastguard Worker }
25*89c4ff92SAndroid Build Coastguard Worker 
26*89c4ff92SAndroid Build Coastguard Worker } //namespace armnn
27*89c4ff92SAndroid Build Coastguard Worker 
28