Average Error: 44.7 → 44.6
Time: 3.3s
Precision: 64
\[\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\]
\[\sqrt[3]{{\left(\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z\right)}^{3}}\]
\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)
\sqrt[3]{{\left(\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z\right)}^{3}}
double f(double x, double y, double z) {
        double r84778 = x;
        double r84779 = y;
        double r84780 = z;
        double r84781 = fma(r84778, r84779, r84780);
        double r84782 = 1.0;
        double r84783 = r84778 * r84779;
        double r84784 = r84783 + r84780;
        double r84785 = r84782 + r84784;
        double r84786 = r84781 - r84785;
        return r84786;
}

double f(double x, double y, double z) {
        double r84787 = x;
        double r84788 = y;
        double r84789 = z;
        double r84790 = fma(r84787, r84788, r84789);
        double r84791 = 1.0;
        double r84792 = r84790 - r84791;
        double r84793 = r84787 * r84788;
        double r84794 = r84792 - r84793;
        double r84795 = r84794 - r84789;
        double r84796 = 3.0;
        double r84797 = pow(r84795, r84796);
        double r84798 = cbrt(r84797);
        return r84798;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original44.7
Target0
Herbie44.6
\[-1\]

Derivation

  1. Initial program 44.7

    \[\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.7

    \[\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.5

    \[\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-cbrt-cube44.6

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

    \[\leadsto \sqrt[3]{\color{blue}{{\left(\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z\right)}^{3}}}\]
  9. Final simplification44.6

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

Reproduce

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

  :herbie-target
  -1

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