diff --git a/src/math/fmaf128.rs b/src/math/fmaf128.rs new file mode 100644 index 000000000..4f5890626 --- /dev/null +++ b/src/math/fmaf128.rs @@ -0,0 +1,4 @@ +#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)] +pub fn fmaf128(x: f128, y: f128, z: f128) -> f128 { + super::generic::fma(x, y, z) +} diff --git a/src/math/fmaf16.rs b/src/math/fmaf16.rs new file mode 100644 index 000000000..c76f63d01 --- /dev/null +++ b/src/math/fmaf16.rs @@ -0,0 +1,4 @@ +#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)] +pub fn fmaf16(x: f16, y: f16, z: f16) -> f16 { + super::generic::fma(x, y, z) +} diff --git a/src/math/generic/fma.rs b/src/math/generic/fma.rs new file mode 100644 index 000000000..da45630ff --- /dev/null +++ b/src/math/generic/fma.rs @@ -0,0 +1,6 @@ +use super::super::Float; + +/// Fused multiply add. +pub fn fma(_x: F, _y: F, _z: F) -> F { + todo!() +} diff --git a/src/math/generic/mod.rs b/src/math/generic/mod.rs index 08524b685..18f39b027 100644 --- a/src/math/generic/mod.rs +++ b/src/math/generic/mod.rs @@ -1,5 +1,7 @@ mod copysign; mod fabs; +mod fma; pub use copysign::copysign; pub use fabs::fabs; +pub use fma::fma; diff --git a/src/math/mod.rs b/src/math/mod.rs index c0c36576b..38b9d1b4c 100644 --- a/src/math/mod.rs +++ b/src/math/mod.rs @@ -336,9 +336,11 @@ cfg_if! { if #[cfg(f16_enabled)] { mod copysignf16; mod fabsf16; + mod fmaf16; pub use self::copysignf16::copysignf16; pub use self::fabsf16::fabsf16; + pub use self::fmaf16::fmaf16; } } @@ -346,9 +348,11 @@ cfg_if! { if #[cfg(f128_enabled)] { mod copysignf128; mod fabsf128; + mod fmaf128; pub use self::copysignf128::copysignf128; pub use self::fabsf128::fabsf128; + pub use self::fmaf128::fmaf128; } }