\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(\left(\frac{1}{t} \cdot \left(\sqrt[3]{\frac{2}{z} + 2} \cdot \sqrt[3]{\frac{2}{z} + 2}\right)\right) \cdot \sqrt[3]{\frac{2}{z} + 2} - 2\right)double f(double x, double y, double z, double t) {
double r753180 = x;
double r753181 = y;
double r753182 = r753180 / r753181;
double r753183 = 2.0;
double r753184 = z;
double r753185 = r753184 * r753183;
double r753186 = 1.0;
double r753187 = t;
double r753188 = r753186 - r753187;
double r753189 = r753185 * r753188;
double r753190 = r753183 + r753189;
double r753191 = r753187 * r753184;
double r753192 = r753190 / r753191;
double r753193 = r753182 + r753192;
return r753193;
}
double f(double x, double y, double z, double t) {
double r753194 = x;
double r753195 = y;
double r753196 = r753194 / r753195;
double r753197 = 1.0;
double r753198 = t;
double r753199 = r753197 / r753198;
double r753200 = 2.0;
double r753201 = z;
double r753202 = r753200 / r753201;
double r753203 = r753202 + r753200;
double r753204 = cbrt(r753203);
double r753205 = r753204 * r753204;
double r753206 = r753199 * r753205;
double r753207 = r753206 * r753204;
double r753208 = r753207 - r753200;
double r753209 = r753196 + r753208;
return r753209;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.8 |
Initial program 9.2
Taylor expanded around 0 0.1
Simplified0.1
rmApplied add-cube-cbrt0.7
Applied associate-*r*0.8
Final simplification0.8
herbie shell --seed 2020049
(FPCore (x y z t)
:name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"
:precision binary64
:herbie-target
(- (/ (+ (/ 2 z) 2) t) (- 2 (/ x y)))
(+ (/ x y) (/ (+ 2 (* (* z 2) (- 1 t))) (* t z))))