Average Error: 0.0 → 0.0
Time: 11.6s
Precision: 64
\[\left(x + 1\right) \cdot y - x\]
\[\mathsf{fma}\left(x + 1, y, -x\right)\]
\left(x + 1\right) \cdot y - x
\mathsf{fma}\left(x + 1, y, -x\right)
double f(double x, double y) {
        double r167523 = x;
        double r167524 = 1.0;
        double r167525 = r167523 + r167524;
        double r167526 = y;
        double r167527 = r167525 * r167526;
        double r167528 = r167527 - r167523;
        return r167528;
}

double f(double x, double y) {
        double r167529 = x;
        double r167530 = 1.0;
        double r167531 = r167529 + r167530;
        double r167532 = y;
        double r167533 = -r167529;
        double r167534 = fma(r167531, r167532, r167533);
        return r167534;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 0.0

    \[\left(x + 1\right) \cdot y - x\]
  2. Using strategy rm
  3. Applied fma-neg0.0

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

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

Reproduce

herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y)
  :name "Data.Colour.SRGB:transferFunction from colour-2.3.3"
  :precision binary64
  (- (* (+ x 1) y) x))