\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\frac{\left(\frac{y}{t - \frac{x}{z}} - x \cdot \frac{1}{t \cdot z - x}\right) + x}{x + 1}double f(double x, double y, double z, double t) {
double r577172 = x;
double r577173 = y;
double r577174 = z;
double r577175 = r577173 * r577174;
double r577176 = r577175 - r577172;
double r577177 = t;
double r577178 = r577177 * r577174;
double r577179 = r577178 - r577172;
double r577180 = r577176 / r577179;
double r577181 = r577172 + r577180;
double r577182 = 1.0;
double r577183 = r577172 + r577182;
double r577184 = r577181 / r577183;
return r577184;
}
double f(double x, double y, double z, double t) {
double r577185 = y;
double r577186 = t;
double r577187 = x;
double r577188 = z;
double r577189 = r577187 / r577188;
double r577190 = r577186 - r577189;
double r577191 = r577185 / r577190;
double r577192 = 1.0;
double r577193 = r577186 * r577188;
double r577194 = r577193 - r577187;
double r577195 = r577192 / r577194;
double r577196 = r577187 * r577195;
double r577197 = r577191 - r577196;
double r577198 = r577197 + r577187;
double r577199 = 1.0;
double r577200 = r577187 + r577199;
double r577201 = r577198 / r577200;
return r577201;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.6 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 7.6
rmApplied div-sub7.6
Simplified2.4
rmApplied div-inv2.4
rmApplied *-un-lft-identity2.4
Applied associate-*l*2.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019350
(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)))