\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 r572531 = x;
double r572532 = y;
double r572533 = z;
double r572534 = r572532 * r572533;
double r572535 = r572534 - r572531;
double r572536 = t;
double r572537 = r572536 * r572533;
double r572538 = r572537 - r572531;
double r572539 = r572535 / r572538;
double r572540 = r572531 + r572539;
double r572541 = 1.0;
double r572542 = r572531 + r572541;
double r572543 = r572540 / r572542;
return r572543;
}
double f(double x, double y, double z, double t) {
double r572544 = x;
double r572545 = z;
double r572546 = t;
double r572547 = r572546 * r572545;
double r572548 = r572547 - r572544;
double r572549 = r572545 / r572548;
double r572550 = 1.0;
double r572551 = y;
double r572552 = r572550 / r572551;
double r572553 = r572549 / r572552;
double r572554 = r572544 + r572553;
double r572555 = r572544 / r572548;
double r572556 = r572554 - r572555;
double r572557 = 1.0;
double r572558 = r572544 + r572557;
double r572559 = r572556 / r572558;
return r572559;
}




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