\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\frac{\left(x + \frac{y}{t - \frac{x}{z}}\right) - \frac{x}{t \cdot z - x}}{x + 1}double f(double x, double y, double z, double t) {
double r678184 = x;
double r678185 = y;
double r678186 = z;
double r678187 = r678185 * r678186;
double r678188 = r678187 - r678184;
double r678189 = t;
double r678190 = r678189 * r678186;
double r678191 = r678190 - r678184;
double r678192 = r678188 / r678191;
double r678193 = r678184 + r678192;
double r678194 = 1.0;
double r678195 = r678184 + r678194;
double r678196 = r678193 / r678195;
return r678196;
}
double f(double x, double y, double z, double t) {
double r678197 = x;
double r678198 = y;
double r678199 = t;
double r678200 = z;
double r678201 = r678197 / r678200;
double r678202 = r678199 - r678201;
double r678203 = r678198 / r678202;
double r678204 = r678197 + r678203;
double r678205 = r678199 * r678200;
double r678206 = r678205 - r678197;
double r678207 = r678197 / r678206;
double r678208 = r678204 - r678207;
double r678209 = 1.0;
double r678210 = r678197 + r678209;
double r678211 = r678208 / r678210;
return r678211;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.1 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 7.1
rmApplied div-sub7.1
Applied associate-+r-7.1
rmApplied associate-/l*2.2
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2020062
(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)))