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 Workerinline 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