\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 r65596 = x;
double r65597 = y;
double r65598 = z;
double r65599 = fma(r65596, r65597, r65598);
double r65600 = 1.0;
double r65601 = r65596 * r65597;
double r65602 = r65601 + r65598;
double r65603 = r65600 + r65602;
double r65604 = r65599 - r65603;
return r65604;
}
double f(double x, double y, double z) {
double r65605 = x;
double r65606 = y;
double r65607 = z;
double r65608 = fma(r65605, r65606, r65607);
double r65609 = 1.0;
double r65610 = r65605 * r65606;
double r65611 = r65610 + r65607;
double r65612 = r65609 + r65611;
double r65613 = r65608 - r65612;
double r65614 = cbrt(r65613);
double r65615 = r65614 * r65614;
double r65616 = r65615 * r65614;
return r65616;
}




Bits error versus x




Bits error versus y




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