x + \frac{y}{1.12837916709551256 \cdot e^{z} - x \cdot y}x + \frac{\sqrt{1}}{1.12837916709551256 \cdot \frac{\sqrt{e^{z}}}{\frac{y}{\sqrt{e^{z}}}} - x}double f(double x, double y, double z) {
double r394753 = x;
double r394754 = y;
double r394755 = 1.1283791670955126;
double r394756 = z;
double r394757 = exp(r394756);
double r394758 = r394755 * r394757;
double r394759 = r394753 * r394754;
double r394760 = r394758 - r394759;
double r394761 = r394754 / r394760;
double r394762 = r394753 + r394761;
return r394762;
}
double f(double x, double y, double z) {
double r394763 = x;
double r394764 = 1.0;
double r394765 = sqrt(r394764);
double r394766 = 1.1283791670955126;
double r394767 = z;
double r394768 = exp(r394767);
double r394769 = sqrt(r394768);
double r394770 = y;
double r394771 = r394770 / r394769;
double r394772 = r394769 / r394771;
double r394773 = r394766 * r394772;
double r394774 = r394773 - r394763;
double r394775 = r394765 / r394774;
double r394776 = r394763 + r394775;
return r394776;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.8 |
|---|---|
| Target | 0.0 |
| Herbie | 0.1 |
Initial program 2.8
rmApplied clear-num2.8
rmApplied add-sqr-sqrt2.8
Applied associate-/l*2.8
Simplified0.1
rmApplied add-sqr-sqrt0.1
Applied associate-/l*0.1
Final simplification0.1
herbie shell --seed 2020045 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(+ x (/ 1 (- (* (/ 1.1283791670955126 y) (exp z)) x)))
(+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))))