\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\frac{\left(x + \frac{\frac{z}{t \cdot z - x}}{\frac{1}{y}}\right) - \frac{x}{t \cdot z - x}}{x + 1}double f(double x, double y, double z, double t) {
double r412246 = x;
double r412247 = y;
double r412248 = z;
double r412249 = r412247 * r412248;
double r412250 = r412249 - r412246;
double r412251 = t;
double r412252 = r412251 * r412248;
double r412253 = r412252 - r412246;
double r412254 = r412250 / r412253;
double r412255 = r412246 + r412254;
double r412256 = 1.0;
double r412257 = r412246 + r412256;
double r412258 = r412255 / r412257;
return r412258;
}
double f(double x, double y, double z, double t) {
double r412259 = x;
double r412260 = z;
double r412261 = t;
double r412262 = r412261 * r412260;
double r412263 = r412262 - r412259;
double r412264 = r412260 / r412263;
double r412265 = 1.0;
double r412266 = y;
double r412267 = r412265 / r412266;
double r412268 = r412264 / r412267;
double r412269 = r412259 + r412268;
double r412270 = r412259 / r412263;
double r412271 = r412269 - r412270;
double r412272 = 1.0;
double r412273 = r412259 + r412272;
double r412274 = r412271 / r412273;
return r412274;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.3 |
|---|---|
| Target | 0.4 |
| Herbie | 2.4 |
Initial program 7.3
rmApplied div-sub7.3
Applied associate-+r-7.3
Simplified4.7
rmApplied div-inv4.7
Applied associate-/r*2.4
Final simplification2.4
herbie shell --seed 2019323
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1)))