Average Error: 44.7 → 44.6
Time: 3.1s
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 r61962 = x;
        double r61963 = y;
        double r61964 = z;
        double r61965 = fma(r61962, r61963, r61964);
        double r61966 = 1.0;
        double r61967 = r61962 * r61963;
        double r61968 = r61967 + r61964;
        double r61969 = r61966 + r61968;
        double r61970 = r61965 - r61969;
        return r61970;
}

double f(double x, double y, double z) {
        double r61971 = x;
        double r61972 = y;
        double r61973 = z;
        double r61974 = fma(r61971, r61972, r61973);
        double r61975 = 1.0;
        double r61976 = r61974 - r61975;
        double r61977 = r61971 * r61972;
        double r61978 = r61976 - r61977;
        double r61979 = r61978 - r61973;
        double r61980 = 3.0;
        double r61981 = pow(r61979, r61980);
        double r61982 = cbrt(r61981);
        return r61982;
}

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