Average Error: 44.9 → 8.3
Time: 7.0s
Precision: 64
\[\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\]
\[\sqrt[3]{{\left(\mathsf{fma}\left(x, y, z\right) - \left(z + x \cdot y\right)\right)}^{3}} - 1\]
\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)
\sqrt[3]{{\left(\mathsf{fma}\left(x, y, z\right) - \left(z + x \cdot y\right)\right)}^{3}} - 1
double f(double x, double y, double z) {
        double r41959 = x;
        double r41960 = y;
        double r41961 = z;
        double r41962 = fma(r41959, r41960, r41961);
        double r41963 = 1.0;
        double r41964 = r41959 * r41960;
        double r41965 = r41964 + r41961;
        double r41966 = r41963 + r41965;
        double r41967 = r41962 - r41966;
        return r41967;
}

double f(double x, double y, double z) {
        double r41968 = x;
        double r41969 = y;
        double r41970 = z;
        double r41971 = fma(r41968, r41969, r41970);
        double r41972 = r41968 * r41969;
        double r41973 = r41970 + r41972;
        double r41974 = r41971 - r41973;
        double r41975 = 3.0;
        double r41976 = pow(r41974, r41975);
        double r41977 = cbrt(r41976);
        double r41978 = 1.0;
        double r41979 = r41977 - r41978;
        return r41979;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original44.9
Target0
Herbie8.3
\[-1\]

Derivation

  1. Initial program 44.9

    \[\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\]
  2. Using strategy rm
  3. Applied add-cbrt-cube44.9

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

    \[\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+31.3

    \[\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 *-un-lft-identity31.3

    \[\leadsto \sqrt[3]{{\color{blue}{\left(1 \cdot \left(\left(\mathsf{fma}\left(x, y, z\right) - z\right) - \left(x \cdot y + 1\right)\right)\right)}}^{3}}\]
  9. Applied unpow-prod-down31.3

    \[\leadsto \sqrt[3]{\color{blue}{{1}^{3} \cdot {\left(\left(\mathsf{fma}\left(x, y, z\right) - z\right) - \left(x \cdot y + 1\right)\right)}^{3}}}\]
  10. Applied cbrt-prod31.3

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

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

    \[\leadsto 1 \cdot \color{blue}{\left(\left(\left(\mathsf{fma}\left(x, y, z\right) - z\right) - x \cdot y\right) - 1\right)}\]
  13. Using strategy rm
  14. Applied add-cbrt-cube15.2

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

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

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

Reproduce

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

  :herbie-target
  -1

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