| 1 | //! Fused multiply-add. Computes `(self * a) + b` |
|---|---|
| 2 | |
| 3 | use super::F32; |
| 4 | |
| 5 | impl F32 { |
| 6 | /// Computes `(self * a) + b`. |
| 7 | pub fn mul_add(self, a: Self, b: Self) -> Self { |
| 8 | self * a + b |
| 9 | } |
| 10 | } |
| 11 | |
| 12 | #[cfg(test)] |
| 13 | mod tests { |
| 14 | use super::F32; |
| 15 | |
| 16 | #[test] |
| 17 | fn sanity_check() { |
| 18 | assert_eq!(F32(0.0).mul_add(F32(0.0), F32(1.0)), F32(1.0)); |
| 19 | assert_eq!(F32(1.0).mul_add(F32(2.0), F32(3.5)), F32(5.5)); |
| 20 | assert_eq!(F32(1.0).mul_add(F32(-1.0), F32(0.0)), F32(-1.0)); |
| 21 | } |
| 22 | } |
| 23 |
