Trait num_traits::ops::mul_add::MulAdd[][src]

pub trait MulAdd<A = Self, B = Self> {
    type Output;
    fn mul_add(self, a: A, b: B) -> Self::Output;

Fused multiply-add. Computes (self * a) + b with only one rounding error, yielding a more accurate result than an unfused multiply-add.

Using mul_add can be more performant than an unfused multiply-add if the target architecture has a dedicated fma CPU instruction.

Note that A and B are Self by default, but this is not mandatory.


use std::f32;

let m = 10.0_f32;
let x = 4.0_f32;
let b = 60.0_f32;

// 100.0
let abs_difference = (m.mul_add(x, b) - (m*x + b)).abs();

assert!(abs_difference <= f32::EPSILON);

Associated Types

The resulting type after applying the fused multiply-add.

Required Methods

Performs the fused multiply-add operation.

Implementations on Foreign Types

impl MulAdd<f32, f32> for f32

impl MulAdd<f64, f64> for f64

impl MulAdd for isize

impl MulAdd for usize

impl MulAdd for i8

impl MulAdd for u8

impl MulAdd for i16

impl MulAdd for u16

impl MulAdd for i32

impl MulAdd for u32

impl MulAdd for i64

impl MulAdd for u64

impl MulAdd for i128

impl MulAdd for u128