From 1c29ffc7fe02de68cf2e82709a3bc3e210cb0ba4 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Thu, 1 Aug 2019 15:03:00 +0100 Subject: COMPMID-2336: Fix build issues. Change-Id: I0932dc9ca4649f0825950ed9d6d249212bc6971e Signed-off-by: Georgios Pinitas Reviewed-on: https://review.mlplatform.org/c/1671 Tested-by: Arm Jenkins --- support/ToolchainSupport.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'support') diff --git a/support/ToolchainSupport.h b/support/ToolchainSupport.h index 020a4a112b..03bbff9aba 100644 --- a/support/ToolchainSupport.h +++ b/support/ToolchainSupport.h @@ -195,6 +195,23 @@ inline T copysign(T x, T y) return ::copysign(x, y); } +/** Computes (x*y) + z as if to infinite precision and rounded only once to fit the result type. + * + * @note This function implements the same behaviour as std::fma except that it doesn't + * support Integral type. The latter is not in the namespace std in some Android toolchains. + * + * @param[in] x floating-point value + * @param[in] y floating-point value + * @param[in] z floating-point value + * + * @return Result floating point value equal to (x*y) + z.c + */ +template ::value>::type> +inline T fma(T x, T y, T z) +{ + return ::fma(x, y, z); +} + /** Loads the data from the given location, converts them to character string equivalents * and writes the result to a character string buffer. * @@ -304,6 +321,23 @@ inline T copysign(T x, T y) return std::copysign(x, y); } +/** Computes (x*y) + z as if to infinite precision and rounded only once to fit the result type. + * + * @note This function implements the same behaviour as std::fma except that it doesn't + * support Integral type. The latter is not in the namespace std in some Android toolchains. + * + * @param[in] x floating-point value + * @param[in] y floating-point value + * @param[in] z floating-point value + * + * @return Result floating point value equal to (x*y) + z. + */ +template ::value>::type> +inline T fma(T x, T y, T z) +{ + return std::fma(x, y, z); +} + /** Loads the data from the given location, converts them to character string equivalents * and writes the result to a character string buffer. * -- cgit v1.2.1