\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1.0}\frac{x + \left(\frac{y}{t - \frac{x}{z}} - \frac{x}{t \cdot z - x}\right)}{1.0 + x}double f(double x, double y, double z, double t) {
double r31146433 = x;
double r31146434 = y;
double r31146435 = z;
double r31146436 = r31146434 * r31146435;
double r31146437 = r31146436 - r31146433;
double r31146438 = t;
double r31146439 = r31146438 * r31146435;
double r31146440 = r31146439 - r31146433;
double r31146441 = r31146437 / r31146440;
double r31146442 = r31146433 + r31146441;
double r31146443 = 1.0;
double r31146444 = r31146433 + r31146443;
double r31146445 = r31146442 / r31146444;
return r31146445;
}
double f(double x, double y, double z, double t) {
double r31146446 = x;
double r31146447 = y;
double r31146448 = t;
double r31146449 = z;
double r31146450 = r31146446 / r31146449;
double r31146451 = r31146448 - r31146450;
double r31146452 = r31146447 / r31146451;
double r31146453 = r31146448 * r31146449;
double r31146454 = r31146453 - r31146446;
double r31146455 = r31146446 / r31146454;
double r31146456 = r31146452 - r31146455;
double r31146457 = r31146446 + r31146456;
double r31146458 = 1.0;
double r31146459 = r31146458 + r31146446;
double r31146460 = r31146457 / r31146459;
return r31146460;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.3 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 7.3
rmApplied div-sub7.3
rmApplied associate-/l*2.3
rmApplied div-sub2.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019168 +o rules:numerics
(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)))