\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\frac{\left(\frac{y}{t - \frac{x}{z}} + x\right) - \frac{1}{\frac{t \cdot z - x}{x}}}{x + 1}double f(double x, double y, double z, double t) {
double r570515 = x;
double r570516 = y;
double r570517 = z;
double r570518 = r570516 * r570517;
double r570519 = r570518 - r570515;
double r570520 = t;
double r570521 = r570520 * r570517;
double r570522 = r570521 - r570515;
double r570523 = r570519 / r570522;
double r570524 = r570515 + r570523;
double r570525 = 1.0;
double r570526 = r570515 + r570525;
double r570527 = r570524 / r570526;
return r570527;
}
double f(double x, double y, double z, double t) {
double r570528 = y;
double r570529 = t;
double r570530 = x;
double r570531 = z;
double r570532 = r570530 / r570531;
double r570533 = r570529 - r570532;
double r570534 = r570528 / r570533;
double r570535 = r570534 + r570530;
double r570536 = 1.0;
double r570537 = r570529 * r570531;
double r570538 = r570537 - r570530;
double r570539 = r570538 / r570530;
double r570540 = r570536 / r570539;
double r570541 = r570535 - r570540;
double r570542 = 1.0;
double r570543 = r570530 + r570542;
double r570544 = r570541 / r570543;
return r570544;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.6 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 7.6
rmApplied div-sub7.6
Applied associate-+r-7.6
Simplified2.3
rmApplied clear-num2.3
rmApplied *-un-lft-identity2.3
Applied associate-*l*2.3
Simplified0.3
rmApplied clear-num0.3
Final simplification0.3
herbie shell --seed 2019306
(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)))