Average Error: 44.3 → 44.2
Time: 13.0s
Precision: 64
\[\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\]
\[\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}\]
\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)
\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}
double f(double x, double y, double z) {
        double r42240 = x;
        double r42241 = y;
        double r42242 = z;
        double r42243 = fma(r42240, r42241, r42242);
        double r42244 = 1.0;
        double r42245 = r42240 * r42241;
        double r42246 = r42245 + r42242;
        double r42247 = r42244 + r42246;
        double r42248 = r42243 - r42247;
        return r42248;
}

double f(double x, double y, double z) {
        double r42249 = x;
        double r42250 = y;
        double r42251 = z;
        double r42252 = fma(r42249, r42250, r42251);
        double r42253 = 1.0;
        double r42254 = r42252 - r42253;
        double r42255 = r42249 * r42250;
        double r42256 = r42254 - r42255;
        double r42257 = r42256 - r42251;
        double r42258 = cbrt(r42257);
        double r42259 = r42258 * r42258;
        double r42260 = r42259 * r42258;
        return r42260;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original44.3
Target0
Herbie44.2
\[-1\]

Derivation

  1. Initial program 44.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+44.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+44.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-cbrt44.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. Final simplification44.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]{\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z}\]

Reproduce

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

  :herbie-target
  -1

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