x + \frac{y}{1.1283791670955126 \cdot e^{z} - x \cdot y}\frac{1}{\frac{\sqrt[3]{\left(e^{z} \cdot 1.1283791670955126\right) \cdot \left(\left(e^{z} \cdot 1.1283791670955126\right) \cdot \left(e^{z} \cdot 1.1283791670955126\right)\right)}}{y} - x} + xdouble f(double x, double y, double z) {
double r20892909 = x;
double r20892910 = y;
double r20892911 = 1.1283791670955126;
double r20892912 = z;
double r20892913 = exp(r20892912);
double r20892914 = r20892911 * r20892913;
double r20892915 = r20892909 * r20892910;
double r20892916 = r20892914 - r20892915;
double r20892917 = r20892910 / r20892916;
double r20892918 = r20892909 + r20892917;
return r20892918;
}
double f(double x, double y, double z) {
double r20892919 = 1.0;
double r20892920 = z;
double r20892921 = exp(r20892920);
double r20892922 = 1.1283791670955126;
double r20892923 = r20892921 * r20892922;
double r20892924 = r20892923 * r20892923;
double r20892925 = r20892923 * r20892924;
double r20892926 = cbrt(r20892925);
double r20892927 = y;
double r20892928 = r20892926 / r20892927;
double r20892929 = x;
double r20892930 = r20892928 - r20892929;
double r20892931 = r20892919 / r20892930;
double r20892932 = r20892931 + r20892929;
return r20892932;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 3.1 |
|---|---|
| Target | 0.0 |
| Herbie | 0.2 |
Initial program 3.1
rmApplied clear-num3.1
rmApplied div-sub3.1
Simplified0.0
rmApplied add-cbrt-cube0.0
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019162
(FPCore (x y z)
:name "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, A"
:herbie-target
(+ x (/ 1 (- (* (/ 1.1283791670955126 y) (exp z)) x)))
(+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))))