Average Error: 44.6 → 8.5
Time: 8.2s
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 + y \cdot x\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 + y \cdot x\right)\right) - 1\right)}^{3}}
double f(double x, double y, double z) {
        double r43751 = x;
        double r43752 = y;
        double r43753 = z;
        double r43754 = fma(r43751, r43752, r43753);
        double r43755 = 1.0;
        double r43756 = r43751 * r43752;
        double r43757 = r43756 + r43753;
        double r43758 = r43755 + r43757;
        double r43759 = r43754 - r43758;
        return r43759;
}

double f(double x, double y, double z) {
        double r43760 = x;
        double r43761 = y;
        double r43762 = z;
        double r43763 = fma(r43760, r43761, r43762);
        double r43764 = r43761 * r43760;
        double r43765 = r43762 + r43764;
        double r43766 = r43763 - r43765;
        double r43767 = 1.0;
        double r43768 = r43766 - r43767;
        double r43769 = 3.0;
        double r43770 = pow(r43768, r43769);
        double r43771 = cbrt(r43770);
        return r43771;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original44.6
Target0
Herbie8.5
\[-1\]

Derivation

  1. Initial program 44.6

    \[\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\]
  2. Using strategy rm
  3. Applied *-un-lft-identity44.6

    \[\leadsto \mathsf{fma}\left(x, y, z\right) - \color{blue}{1 \cdot \left(1 + \left(x \cdot y + z\right)\right)}\]
  4. Applied *-un-lft-identity44.6

    \[\leadsto \color{blue}{1 \cdot \mathsf{fma}\left(x, y, z\right)} - 1 \cdot \left(1 + \left(x \cdot y + z\right)\right)\]
  5. Applied distribute-lft-out--44.6

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

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

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

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

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

Reproduce

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

  :herbie-target
  -1.0

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