From 4d3cb0a4ba54d3a93935f391751a3f5adddbcdbf Mon Sep 17 00:00:00 2001 From: Yoan Lecoq Date: Sun, 3 Feb 2019 15:09:42 +0100 Subject: [PATCH] Impl MulAdd+MulAssign with libm fallback --- src/ops/mul_add.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/ops/mul_add.rs b/src/ops/mul_add.rs index 6e43f2f..54b9a71 100644 --- a/src/ops/mul_add.rs +++ b/src/ops/mul_add.rs @@ -54,6 +54,27 @@ impl MulAdd for f64 { } } +#[cfg(all(not(feature = "std"), feature = "libm"))] +impl MulAdd for f32 { + type Output = Self; + + #[inline] + fn mul_add(self, a: Self, b: Self) -> Self::Output { + ::mul_add(self, a, b) + } +} + +#[cfg(all(not(feature = "std"), feature = "libm"))] +impl MulAdd for f64 { + type Output = Self; + + #[inline] + fn mul_add(self, a: Self, b: Self) -> Self::Output { + ::mul_add(self, a, b) + } +} + + macro_rules! mul_add_impl { ($trait_name:ident for $($t:ty)*) => {$( impl $trait_name for $t { @@ -87,6 +108,23 @@ impl MulAddAssign for f64 { } } +#[cfg(all(not(feature = "std"), feature = "libm"))] +impl MulAddAssign for f32 { + #[inline] + fn mul_add_assign(&mut self, a: Self, b: Self) { + *self = ::mul_add(*self, a, b) + } +} + +#[cfg(all(not(feature = "std"), feature = "libm"))] +impl MulAddAssign for f64 { + #[inline] + fn mul_add_assign(&mut self, a: Self, b: Self) { + *self = ::mul_add(*self, a, b) + } +} + + macro_rules! mul_add_assign_impl { ($trait_name:ident for $($t:ty)*) => {$( impl $trait_name for $t {