\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 r75460 = x;
double r75461 = y;
double r75462 = z;
double r75463 = fma(r75460, r75461, r75462);
double r75464 = 1.0;
double r75465 = r75460 * r75461;
double r75466 = r75465 + r75462;
double r75467 = r75464 + r75466;
double r75468 = r75463 - r75467;
return r75468;
}
double f(double x, double y, double z) {
double r75469 = x;
double r75470 = y;
double r75471 = z;
double r75472 = fma(r75469, r75470, r75471);
double r75473 = 1.0;
double r75474 = r75469 * r75470;
double r75475 = r75474 + r75471;
double r75476 = r75473 + r75475;
double r75477 = r75472 - r75476;
double r75478 = cbrt(r75477);
double r75479 = r75478 * r75478;
double r75480 = r75479 * r75478;
return r75480;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 45.2 |
|---|---|
| Target | 0 |
| Herbie | 45.1 |
Initial program 45.2
rmApplied add-cube-cbrt45.1
Final simplification45.1
herbie shell --seed 2019322
(FPCore (x y z)
:name "simple fma test"
:precision binary64
:herbie-target
-1
(- (fma x y z) (+ 1 (+ (* x y) z))))