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 {