Average Error: 45.7 → 45.7
Time: 2.8s
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 r71420 = x;
        double r71421 = y;
        double r71422 = z;
        double r71423 = fma(r71420, r71421, r71422);
        double r71424 = 1.0;
        double r71425 = r71420 * r71421;
        double r71426 = r71425 + r71422;
        double r71427 = r71424 + r71426;
        double r71428 = r71423 - r71427;
        return r71428;
}

double f(double x, double y, double z) {
        double r71429 = x;
        double r71430 = y;
        double r71431 = z;
        double r71432 = fma(r71429, r71430, r71431);
        double r71433 = 1.0;
        double r71434 = r71429 * r71430;
        double r71435 = r71434 + r71431;
        double r71436 = r71433 + r71435;
        double r71437 = r71432 - r71436;
        double r71438 = cbrt(r71437);
        double r71439 = r71438 * r71438;
        double r71440 = r71439 * r71438;
        return r71440;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original45.7
Target0
Herbie45.7
\[-1\]

Derivation

  1. Initial program 45.7

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

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

    \[\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 2019318 
(FPCore (x y z)
  :name "simple fma test"
  :precision binary64

  :herbie-target
  -1

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