Average Error: 45.5 → 8.1
Time: 7.3s
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(z + x \cdot y\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(z + x \cdot y\right)\right) - 1\right)}^{3}}
double f(double x, double y, double z) {
        double r40758 = x;
        double r40759 = y;
        double r40760 = z;
        double r40761 = fma(r40758, r40759, r40760);
        double r40762 = 1.0;
        double r40763 = r40758 * r40759;
        double r40764 = r40763 + r40760;
        double r40765 = r40762 + r40764;
        double r40766 = r40761 - r40765;
        return r40766;
}

double f(double x, double y, double z) {
        double r40767 = x;
        double r40768 = y;
        double r40769 = z;
        double r40770 = fma(r40767, r40768, r40769);
        double r40771 = r40767 * r40768;
        double r40772 = r40769 + r40771;
        double r40773 = r40770 - r40772;
        double r40774 = 1.0;
        double r40775 = r40773 - r40774;
        double r40776 = 3.0;
        double r40777 = pow(r40775, r40776);
        double r40778 = cbrt(r40777);
        return r40778;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original45.5
Target0
Herbie8.1
\[-1\]

Derivation

  1. Initial program 45.5

    \[\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\]
  2. Simplified45.5

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

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

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

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

Reproduce

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

  :herbie-target
  -1.0

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