\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\sqrt[3]{{\left(\left(\mathsf{fma}\left(x, y, z\right) + \left(-\left(z + x \cdot y\right)\right)\right) - 1\right)}^{3}}double f(double x, double y, double z) {
double r75845 = x;
double r75846 = y;
double r75847 = z;
double r75848 = fma(r75845, r75846, r75847);
double r75849 = 1.0;
double r75850 = r75845 * r75846;
double r75851 = r75850 + r75847;
double r75852 = r75849 + r75851;
double r75853 = r75848 - r75852;
return r75853;
}
double f(double x, double y, double z) {
double r75854 = x;
double r75855 = y;
double r75856 = z;
double r75857 = fma(r75854, r75855, r75856);
double r75858 = r75854 * r75855;
double r75859 = r75856 + r75858;
double r75860 = -r75859;
double r75861 = r75857 + r75860;
double r75862 = 1.0;
double r75863 = r75861 - r75862;
double r75864 = 3.0;
double r75865 = pow(r75863, r75864);
double r75866 = cbrt(r75865);
return r75866;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 45.1 |
|---|---|
| Target | 0 |
| Herbie | 7.9 |
Initial program 45.1
rmApplied add-cbrt-cube45.1
Simplified45.1
rmApplied associate--r+30.8
rmApplied associate--r+14.9
rmApplied sub-neg14.9
Applied associate--l+7.9
Simplified7.9
Final simplification7.9
herbie shell --seed 2020027
(FPCore (x y z)
:name "simple fma test"
:precision binary64
:herbie-target
-1
(- (fma x y z) (+ 1 (+ (* x y) z))))