\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\frac{x + \left(y \cdot \frac{z}{t \cdot z - x} - x \cdot \frac{1}{t \cdot z - x}\right)}{x + 1}double f(double x, double y, double z, double t) {
double r461258 = x;
double r461259 = y;
double r461260 = z;
double r461261 = r461259 * r461260;
double r461262 = r461261 - r461258;
double r461263 = t;
double r461264 = r461263 * r461260;
double r461265 = r461264 - r461258;
double r461266 = r461262 / r461265;
double r461267 = r461258 + r461266;
double r461268 = 1.0;
double r461269 = r461258 + r461268;
double r461270 = r461267 / r461269;
return r461270;
}
double f(double x, double y, double z, double t) {
double r461271 = x;
double r461272 = y;
double r461273 = z;
double r461274 = t;
double r461275 = r461274 * r461273;
double r461276 = r461275 - r461271;
double r461277 = r461273 / r461276;
double r461278 = r461272 * r461277;
double r461279 = 1.0;
double r461280 = r461279 / r461276;
double r461281 = r461271 * r461280;
double r461282 = r461278 - r461281;
double r461283 = r461271 + r461282;
double r461284 = 1.0;
double r461285 = r461271 + r461284;
double r461286 = r461283 / r461285;
return r461286;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.3 |
|---|---|
| Target | 0.3 |
| Herbie | 2.4 |
Initial program 7.3
rmApplied div-sub7.3
Simplified2.4
rmApplied div-inv2.4
Final simplification2.4
herbie shell --seed 2019325
(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)))