Average Error: 45.3 → 45.2
Time: 7.5s
Precision: 64
\[\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\]
\[\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z\]
\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)
\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z
double f(double x, double y, double z) {
        double r60419 = x;
        double r60420 = y;
        double r60421 = z;
        double r60422 = fma(r60419, r60420, r60421);
        double r60423 = 1.0;
        double r60424 = r60419 * r60420;
        double r60425 = r60424 + r60421;
        double r60426 = r60423 + r60425;
        double r60427 = r60422 - r60426;
        return r60427;
}

double f(double x, double y, double z) {
        double r60428 = x;
        double r60429 = y;
        double r60430 = z;
        double r60431 = fma(r60428, r60429, r60430);
        double r60432 = 1.0;
        double r60433 = r60431 - r60432;
        double r60434 = r60428 * r60429;
        double r60435 = r60433 - r60434;
        double r60436 = r60435 - r60430;
        return r60436;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original45.3
Target0
Herbie45.2
\[-1\]

Derivation

  1. Initial program 45.3

    \[\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\]
  2. Using strategy rm
  3. Applied associate--r+45.3

    \[\leadsto \color{blue}{\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - \left(x \cdot y + z\right)}\]
  4. Using strategy rm
  5. Applied associate--r+45.2

    \[\leadsto \color{blue}{\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z}\]
  6. Using strategy rm
  7. Applied add-cube-cbrt45.2

    \[\leadsto \color{blue}{\left(\sqrt[3]{\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z} \cdot \sqrt[3]{\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z}\right) \cdot \sqrt[3]{\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z}}\]
  8. Using strategy rm
  9. Applied add-cube-cbrt45.2

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

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

Reproduce

herbie shell --seed 2019308 
(FPCore (x y z)
  :name "simple fma test"
  :precision binary64

  :herbie-target
  -1

  (- (fma x y z) (+ 1 (+ (* x y) z))))