\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\left(\left(x + \frac{y}{t - \frac{x}{z}}\right) - \frac{x}{t \cdot z - x}\right) \cdot \frac{1}{1 + x}double f(double x, double y, double z, double t) {
double r37508559 = x;
double r37508560 = y;
double r37508561 = z;
double r37508562 = r37508560 * r37508561;
double r37508563 = r37508562 - r37508559;
double r37508564 = t;
double r37508565 = r37508564 * r37508561;
double r37508566 = r37508565 - r37508559;
double r37508567 = r37508563 / r37508566;
double r37508568 = r37508559 + r37508567;
double r37508569 = 1.0;
double r37508570 = r37508559 + r37508569;
double r37508571 = r37508568 / r37508570;
return r37508571;
}
double f(double x, double y, double z, double t) {
double r37508572 = x;
double r37508573 = y;
double r37508574 = t;
double r37508575 = z;
double r37508576 = r37508572 / r37508575;
double r37508577 = r37508574 - r37508576;
double r37508578 = r37508573 / r37508577;
double r37508579 = r37508572 + r37508578;
double r37508580 = r37508574 * r37508575;
double r37508581 = r37508580 - r37508572;
double r37508582 = r37508572 / r37508581;
double r37508583 = r37508579 - r37508582;
double r37508584 = 1.0;
double r37508585 = 1.0;
double r37508586 = r37508585 + r37508572;
double r37508587 = r37508584 / r37508586;
double r37508588 = r37508583 * r37508587;
return r37508588;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.5 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 7.5
rmApplied div-sub7.5
rmApplied associate-/l*2.4
rmApplied *-un-lft-identity2.4
Applied associate-/r*2.4
Simplified0.4
rmApplied div-inv0.5
Final simplification0.5
herbie shell --seed 2019169
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1.0))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)))