\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\frac{x + \left(y \cdot \frac{1}{\frac{t \cdot z - x}{z}} - \frac{x}{t \cdot z - x}\right)}{x + 1}double f(double x, double y, double z, double t) {
double r759023 = x;
double r759024 = y;
double r759025 = z;
double r759026 = r759024 * r759025;
double r759027 = r759026 - r759023;
double r759028 = t;
double r759029 = r759028 * r759025;
double r759030 = r759029 - r759023;
double r759031 = r759027 / r759030;
double r759032 = r759023 + r759031;
double r759033 = 1.0;
double r759034 = r759023 + r759033;
double r759035 = r759032 / r759034;
return r759035;
}
double f(double x, double y, double z, double t) {
double r759036 = x;
double r759037 = y;
double r759038 = 1.0;
double r759039 = t;
double r759040 = z;
double r759041 = r759039 * r759040;
double r759042 = r759041 - r759036;
double r759043 = r759042 / r759040;
double r759044 = r759038 / r759043;
double r759045 = r759037 * r759044;
double r759046 = r759036 / r759042;
double r759047 = r759045 - r759046;
double r759048 = r759036 + r759047;
double r759049 = 1.0;
double r759050 = r759036 + r759049;
double r759051 = r759048 / r759050;
return r759051;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.2 |
|---|---|
| Target | 0.3 |
| Herbie | 2.3 |
Initial program 7.2
rmApplied div-sub7.2
Simplified2.3
rmApplied clear-num2.3
Final simplification2.3
herbie shell --seed 2020042
(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)))