Average Error: 45.3 → 45.3
Time: 1.7s
Precision: 64
\[\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\]
\[\left(\sqrt[3]{\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)}\]
\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)
\left(\sqrt[3]{\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)}
double f(double x, double y, double z) {
        double r55738 = x;
        double r55739 = y;
        double r55740 = z;
        double r55741 = fma(r55738, r55739, r55740);
        double r55742 = 1.0;
        double r55743 = r55738 * r55739;
        double r55744 = r55743 + r55740;
        double r55745 = r55742 + r55744;
        double r55746 = r55741 - r55745;
        return r55746;
}

double f(double x, double y, double z) {
        double r55747 = x;
        double r55748 = y;
        double r55749 = z;
        double r55750 = fma(r55747, r55748, r55749);
        double r55751 = 1.0;
        double r55752 = r55747 * r55748;
        double r55753 = r55752 + r55749;
        double r55754 = r55751 + r55753;
        double r55755 = r55750 - r55754;
        double r55756 = cbrt(r55755);
        double r55757 = r55756 * r55756;
        double r55758 = r55757 * r55756;
        return r55758;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original45.3
Target0
Herbie45.3
\[-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-cube-cbrt45.3

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

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

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))))