\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\left(\sqrt[3]{\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z} \cdot \sqrt[3]{\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z}\right) \cdot \sqrt[3]{\left(\sqrt[3]{\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z} \cdot \sqrt[3]{\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z}\right) \cdot \sqrt[3]{\left(\left(\mathsf{fma}\left(x, y, z\right) - 1\right) - x \cdot y\right) - z}}double f(double x, double y, double z) {
double r37366 = x;
double r37367 = y;
double r37368 = z;
double r37369 = fma(r37366, r37367, r37368);
double r37370 = 1.0;
double r37371 = r37366 * r37367;
double r37372 = r37371 + r37368;
double r37373 = r37370 + r37372;
double r37374 = r37369 - r37373;
return r37374;
}
double f(double x, double y, double z) {
double r37375 = x;
double r37376 = y;
double r37377 = z;
double r37378 = fma(r37375, r37376, r37377);
double r37379 = 1.0;
double r37380 = r37378 - r37379;
double r37381 = r37375 * r37376;
double r37382 = r37380 - r37381;
double r37383 = r37382 - r37377;
double r37384 = cbrt(r37383);
double r37385 = r37384 * r37384;
double r37386 = r37385 * r37384;
double r37387 = cbrt(r37386);
double r37388 = r37385 * r37387;
return r37388;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 45.0 |
|---|---|
| Target | 0 |
| Herbie | 44.9 |
Initial program 45.0
rmApplied associate--r+45.0
rmApplied associate--r+44.9
rmApplied add-cube-cbrt44.9
rmApplied add-cube-cbrt44.9
Final simplification44.9
herbie shell --seed 2019198
(FPCore (x y z)
:name "simple fma test"
:herbie-target
-1.0
(- (fma x y z) (+ 1.0 (+ (* x y) z))))