\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 r441478 = x;
double r441479 = y;
double r441480 = z;
double r441481 = r441479 * r441480;
double r441482 = r441481 - r441478;
double r441483 = t;
double r441484 = r441483 * r441480;
double r441485 = r441484 - r441478;
double r441486 = r441482 / r441485;
double r441487 = r441478 + r441486;
double r441488 = 1.0;
double r441489 = r441478 + r441488;
double r441490 = r441487 / r441489;
return r441490;
}
double f(double x, double y, double z, double t) {
double r441491 = x;
double r441492 = y;
double r441493 = z;
double r441494 = t;
double r441495 = r441494 * r441493;
double r441496 = r441495 - r441491;
double r441497 = r441493 / r441496;
double r441498 = r441492 * r441497;
double r441499 = 1.0;
double r441500 = r441499 / r441496;
double r441501 = r441491 * r441500;
double r441502 = r441498 - r441501;
double r441503 = r441491 + r441502;
double r441504 = 1.0;
double r441505 = r441491 + r441504;
double r441506 = r441503 / r441505;
return r441506;
}




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)))