x + \frac{y}{1.128379167095512558560699289955664426088 \cdot e^{z} - x \cdot y}x + \frac{1}{1.128379167095512558560699289955664426088 \cdot \frac{e^{z}}{y} - x}double f(double x, double y, double z) {
double r307121 = x;
double r307122 = y;
double r307123 = 1.1283791670955126;
double r307124 = z;
double r307125 = exp(r307124);
double r307126 = r307123 * r307125;
double r307127 = r307121 * r307122;
double r307128 = r307126 - r307127;
double r307129 = r307122 / r307128;
double r307130 = r307121 + r307129;
return r307130;
}
double f(double x, double y, double z) {
double r307131 = x;
double r307132 = 1.0;
double r307133 = 1.1283791670955126;
double r307134 = z;
double r307135 = exp(r307134);
double r307136 = y;
double r307137 = r307135 / r307136;
double r307138 = r307133 * r307137;
double r307139 = r307138 - r307131;
double r307140 = r307132 / r307139;
double r307141 = r307131 + r307140;
return r307141;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.9 |
|---|---|
| Target | 0.0 |
| Herbie | 0.1 |
Initial program 2.9
rmApplied clear-num2.9
rmApplied div-sub2.9
Simplified3.0
Simplified0.1
Final simplification0.1
herbie shell --seed 2019298
(FPCore (x y z)
:name "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(+ x (/ 1 (- (* (/ 1.12837916709551256 y) (exp z)) x)))
(+ x (/ y (- (* 1.12837916709551256 (exp z)) (* x y)))))