Average Error: 0.0 → 0.0
Time: 9.6s
Precision: 64
\[x \cdot y + \left(x - 1\right) \cdot z\]
\[\mathsf{fma}\left(x - 1, z, y \cdot x\right)\]
x \cdot y + \left(x - 1\right) \cdot z
\mathsf{fma}\left(x - 1, z, y \cdot x\right)
double f(double x, double y, double z) {
        double r88532 = x;
        double r88533 = y;
        double r88534 = r88532 * r88533;
        double r88535 = 1.0;
        double r88536 = r88532 - r88535;
        double r88537 = z;
        double r88538 = r88536 * r88537;
        double r88539 = r88534 + r88538;
        return r88539;
}

double f(double x, double y, double z) {
        double r88540 = x;
        double r88541 = 1.0;
        double r88542 = r88540 - r88541;
        double r88543 = z;
        double r88544 = y;
        double r88545 = r88544 * r88540;
        double r88546 = fma(r88542, r88543, r88545);
        return r88546;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.0

    \[x \cdot y + \left(x - 1\right) \cdot z\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(x - 1, z, x \cdot y\right)}\]
  3. Final simplification0.0

    \[\leadsto \mathsf{fma}\left(x - 1, z, y \cdot x\right)\]

Reproduce

herbie shell --seed 2019194 +o rules:numerics
(FPCore (x y z)
  :name "Graphics.Rendering.Chart.Drawing:drawTextsR from Chart-1.5.3"
  (+ (* x y) (* (- x 1.0) z)))