Average Error: 0.0 → 0.0
Time: 610.0ms
Precision: 64
\[\left(\frac{x}{2} + y \cdot x\right) + z\]
\[\mathsf{fma}\left(x, y, \frac{x}{2}\right) + z\]
\left(\frac{x}{2} + y \cdot x\right) + z
\mathsf{fma}\left(x, y, \frac{x}{2}\right) + z
double f(double x, double y, double z) {
        double r284741 = x;
        double r284742 = 2.0;
        double r284743 = r284741 / r284742;
        double r284744 = y;
        double r284745 = r284744 * r284741;
        double r284746 = r284743 + r284745;
        double r284747 = z;
        double r284748 = r284746 + r284747;
        return r284748;
}

double f(double x, double y, double z) {
        double r284749 = x;
        double r284750 = y;
        double r284751 = 2.0;
        double r284752 = r284749 / r284751;
        double r284753 = fma(r284749, r284750, r284752);
        double r284754 = z;
        double r284755 = r284753 + r284754;
        return r284755;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.0

    \[\left(\frac{x}{2} + y \cdot x\right) + z\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(x, y, \frac{x}{2}\right) + z}\]
  3. Final simplification0.0

    \[\leadsto \mathsf{fma}\left(x, y, \frac{x}{2}\right) + z\]

Reproduce

herbie shell --seed 2019351 +o rules:numerics
(FPCore (x y z)
  :name "Data.Histogram.Bin.BinF:$cfromIndex from histogram-fill-0.8.4.1"
  :precision binary64
  (+ (+ (/ x 2) (* y x)) z))