Average Error: 45.3 → 8.4
Time: 2.7s
Precision: 64
\[\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\]
\[\sqrt[3]{{\left(\left(\mathsf{fma}\left(x, y, z\right) + \left(-\left(z + x \cdot y\right)\right)\right) - 1\right)}^{3}}\]
\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)
\sqrt[3]{{\left(\left(\mathsf{fma}\left(x, y, z\right) + \left(-\left(z + x \cdot y\right)\right)\right) - 1\right)}^{3}}
double f(double x, double y, double z) {
        double r66596 = x;
        double r66597 = y;
        double r66598 = z;
        double r66599 = fma(r66596, r66597, r66598);
        double r66600 = 1.0;
        double r66601 = r66596 * r66597;
        double r66602 = r66601 + r66598;
        double r66603 = r66600 + r66602;
        double r66604 = r66599 - r66603;
        return r66604;
}

double f(double x, double y, double z) {
        double r66605 = x;
        double r66606 = y;
        double r66607 = z;
        double r66608 = fma(r66605, r66606, r66607);
        double r66609 = r66605 * r66606;
        double r66610 = r66607 + r66609;
        double r66611 = -r66610;
        double r66612 = r66608 + r66611;
        double r66613 = 1.0;
        double r66614 = r66612 - r66613;
        double r66615 = 3.0;
        double r66616 = pow(r66614, r66615);
        double r66617 = cbrt(r66616);
        return r66617;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original45.3
Target0
Herbie8.4
\[-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 add-cbrt-cube45.3

    \[\leadsto \color{blue}{\sqrt[3]{\left(\left(\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\right) \cdot \left(\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\right)\right) \cdot \left(\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\right)}}\]
  4. Simplified45.3

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

    \[\leadsto \sqrt[3]{{\color{blue}{\left(\left(\mathsf{fma}\left(x, y, z\right) - z\right) - \left(x \cdot y + 1\right)\right)}}^{3}}\]
  7. Using strategy rm
  8. Applied associate--r+15.3

    \[\leadsto \sqrt[3]{{\color{blue}{\left(\left(\left(\mathsf{fma}\left(x, y, z\right) - z\right) - x \cdot y\right) - 1\right)}}^{3}}\]
  9. Using strategy rm
  10. Applied sub-neg15.3

    \[\leadsto \sqrt[3]{{\left(\left(\color{blue}{\left(\mathsf{fma}\left(x, y, z\right) + \left(-z\right)\right)} - x \cdot y\right) - 1\right)}^{3}}\]
  11. Applied associate--l+8.4

    \[\leadsto \sqrt[3]{{\left(\color{blue}{\left(\mathsf{fma}\left(x, y, z\right) + \left(\left(-z\right) - x \cdot y\right)\right)} - 1\right)}^{3}}\]
  12. Simplified8.4

    \[\leadsto \sqrt[3]{{\left(\left(\mathsf{fma}\left(x, y, z\right) + \color{blue}{\left(-\left(z + x \cdot y\right)\right)}\right) - 1\right)}^{3}}\]
  13. Final simplification8.4

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

Reproduce

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

  :herbie-target
  -1

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