x + \frac{y}{1.12837916709551256 \cdot e^{z} - x \cdot y}x + \frac{1}{1.12837916709551256 \cdot \frac{e^{z}}{y} - \frac{x}{1}}double f(double x, double y, double z) {
double r521643 = x;
double r521644 = y;
double r521645 = 1.1283791670955126;
double r521646 = z;
double r521647 = exp(r521646);
double r521648 = r521645 * r521647;
double r521649 = r521643 * r521644;
double r521650 = r521648 - r521649;
double r521651 = r521644 / r521650;
double r521652 = r521643 + r521651;
return r521652;
}
double f(double x, double y, double z) {
double r521653 = x;
double r521654 = 1.0;
double r521655 = 1.1283791670955126;
double r521656 = z;
double r521657 = exp(r521656);
double r521658 = y;
double r521659 = r521657 / r521658;
double r521660 = r521655 * r521659;
double r521661 = r521653 / r521654;
double r521662 = r521660 - r521661;
double r521663 = r521654 / r521662;
double r521664 = r521653 + r521663;
return r521664;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.5 |
|---|---|
| Target | 0.0 |
| Herbie | 0.1 |
Initial program 2.5
rmApplied clear-num2.6
rmApplied div-sub2.6
Simplified2.6
Simplified0.1
Final simplification0.1
herbie shell --seed 2020060
(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)))))