//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef SUPPORT_FP_COMPARE_H
#define SUPPORT_FP_COMPARE_H

#include <cmath>      // for std::abs
#include <algorithm>  // for std::max
#include <cassert>

// See https://www.boost.org/doc/libs/1_70_0/libs/test/doc/html/boost_test/testing_tools/extended_comparison/floating_point/floating_points_comparison_theory.html

template<typename T>
bool fptest_close(T val, T expected, T eps)
{
	constexpr T zero = T(0);
	assert(eps >= zero);

//	Handle the zero cases
	if (eps      == zero) return val == expected;
	if (val      == zero) return std::abs(expected) <= eps;
	if (expected == zero) return std::abs(val)      <= eps;

	return std::abs(val - expected) < eps
	    && std::abs(val - expected)/std::abs(val) < eps;
}

template<typename T>
bool fptest_close_pct(T val, T expected, T percent)
{
	constexpr T zero = T(0);
	assert(percent >= zero);

//	Handle the zero cases
	if (percent == zero) return val == expected;
	T eps = (percent / T(100)) * std::max(std::abs(val), std::abs(expected));

	return fptest_close(val, expected, eps);
}


#endif // SUPPORT_FP_COMPARE_H
