@@ -18,7 +18,7 @@ namespace unsafe {
18
18
namespace detail {
19
19
20
20
template <class T >
21
- constexpr auto fma_impl (T x, T y, T z) noexcept -> T
21
+ inline auto fma_impl (T x, T y, T z) noexcept -> T
22
22
{
23
23
// Default to the written-out operations.
24
24
@@ -27,19 +27,19 @@ constexpr auto fma_impl(T x, T y, T z) noexcept -> T
27
27
28
28
#if defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && !defined(__INTEL_LLVM_COMPILER)
29
29
template <>
30
- auto fma_impl<float >(float x, float y, float z) noexcept -> float
30
+ inline auto fma_impl<float >(float x, float y, float z) noexcept -> float
31
31
{
32
32
return __builtin_fmaf (x, y, z);
33
33
}
34
34
35
35
template <>
36
- auto fma_impl<double >(double x, double y, double z) noexcept -> double
36
+ inline auto fma_impl<double >(double x, double y, double z) noexcept -> double
37
37
{
38
38
return __builtin_fma (x, y, z);
39
39
}
40
40
41
41
template <>
42
- auto fma_impl<long double >(long double x, long double y, long double z) noexcept -> long double
42
+ inline auto fma_impl<long double >(long double x, long double y, long double z) noexcept -> long double
43
43
{
44
44
return __builtin_fmal (x, y, z);
45
45
}
@@ -48,7 +48,7 @@ auto fma_impl<long double>(long double x, long double y, long double z) noexcept
48
48
} // namespace detail
49
49
50
50
template <typename Real>
51
- constexpr auto fma (Real x, Real y, Real z) noexcept -> Real
51
+ auto fma (Real x, Real y, Real z) noexcept -> Real
52
52
{
53
53
return detail::fma_impl (x, y, z);
54
54
}
0 commit comments