Average Error: 0.0 → 0.0
Time: 1.1s
Precision: 64
\[x - \left(y \cdot 4\right) \cdot z\]
\[\mathsf{fma}\left(4 \cdot y, -z, x\right)\]
x - \left(y \cdot 4\right) \cdot z
\mathsf{fma}\left(4 \cdot y, -z, x\right)
double f(double x, double y, double z) {
        double r118654 = x;
        double r118655 = y;
        double r118656 = 4.0;
        double r118657 = r118655 * r118656;
        double r118658 = z;
        double r118659 = r118657 * r118658;
        double r118660 = r118654 - r118659;
        return r118660;
}

double f(double x, double y, double z) {
        double r118661 = 4.0;
        double r118662 = y;
        double r118663 = r118661 * r118662;
        double r118664 = z;
        double r118665 = -r118664;
        double r118666 = x;
        double r118667 = fma(r118663, r118665, r118666);
        return r118667;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.0

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

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

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

Reproduce

herbie shell --seed 2019174 +o rules:numerics
(FPCore (x y z)
  :name "Diagrams.Solve.Polynomial:quadForm from diagrams-solve-0.1, A"
  (- x (* (* y 4.0) z)))