x + \frac{y}{1.12837916709551256 \cdot e^{z} - x \cdot y}x + \frac{1}{\mathsf{fma}\left(\left(\sqrt[3]{\frac{e^{z}}{y}} \cdot \sqrt[3]{\frac{e^{z}}{y}}\right) \cdot \sqrt[3]{\frac{e^{z}}{y}}, 1.12837916709551256, -x\right)}double f(double x, double y, double z) {
double r375563 = x;
double r375564 = y;
double r375565 = 1.1283791670955126;
double r375566 = z;
double r375567 = exp(r375566);
double r375568 = r375565 * r375567;
double r375569 = r375563 * r375564;
double r375570 = r375568 - r375569;
double r375571 = r375564 / r375570;
double r375572 = r375563 + r375571;
return r375572;
}
double f(double x, double y, double z) {
double r375573 = x;
double r375574 = 1.0;
double r375575 = z;
double r375576 = exp(r375575);
double r375577 = y;
double r375578 = r375576 / r375577;
double r375579 = cbrt(r375578);
double r375580 = r375579 * r375579;
double r375581 = r375580 * r375579;
double r375582 = 1.1283791670955126;
double r375583 = -r375573;
double r375584 = fma(r375581, r375582, r375583);
double r375585 = r375574 / r375584;
double r375586 = r375573 + r375585;
return r375586;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 2.7 |
|---|---|
| Target | 0.0 |
| Herbie | 0.2 |
Initial program 2.7
rmApplied clear-num2.7
Simplified0.0
rmApplied add-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2020062 +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)))))