Average Error: 0.0 → 0.0
Time: 1.8s
Precision: 64
\[x \cdot x - \left(y \cdot 4\right) \cdot z\]
\[\mathsf{fma}\left(z \cdot \left(-4\right), y, x \cdot x\right)\]
x \cdot x - \left(y \cdot 4\right) \cdot z
\mathsf{fma}\left(z \cdot \left(-4\right), y, x \cdot x\right)
double f(double x, double y, double z) {
        double r131679 = x;
        double r131680 = r131679 * r131679;
        double r131681 = y;
        double r131682 = 4.0;
        double r131683 = r131681 * r131682;
        double r131684 = z;
        double r131685 = r131683 * r131684;
        double r131686 = r131680 - r131685;
        return r131686;
}

double f(double x, double y, double z) {
        double r131687 = z;
        double r131688 = 4.0;
        double r131689 = -r131688;
        double r131690 = r131687 * r131689;
        double r131691 = y;
        double r131692 = x;
        double r131693 = r131692 * r131692;
        double r131694 = fma(r131690, r131691, r131693);
        return r131694;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.0

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

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

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

Reproduce

herbie shell --seed 2019174 +o rules:numerics
(FPCore (x y z)
  :name "Graphics.Rasterific.QuadraticFormula:discriminant from Rasterific-0.6.1"
  (- (* x x) (* (* y 4.0) z)))