\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 r64471 = x;
double r64472 = y;
double r64473 = z;
double r64474 = fma(r64471, r64472, r64473);
double r64475 = 1.0;
double r64476 = r64471 * r64472;
double r64477 = r64476 + r64473;
double r64478 = r64475 + r64477;
double r64479 = r64474 - r64478;
return r64479;
}
double f(double x, double y, double z) {
double r64480 = x;
double r64481 = y;
double r64482 = z;
double r64483 = fma(r64480, r64481, r64482);
double r64484 = 1.0;
double r64485 = r64480 * r64481;
double r64486 = r64485 + r64482;
double r64487 = r64484 + r64486;
double r64488 = r64483 - r64487;
double r64489 = cbrt(r64488);
double r64490 = r64489 * r64489;
double r64491 = r64490 * r64489;
return r64491;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 44.9 |
|---|---|
| Target | 0 |
| Herbie | 44.9 |
Initial program 44.9
rmApplied add-cube-cbrt44.9
Final simplification44.9
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))))