\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\left(x - \frac{y}{z \cdot 3}\right) + \frac{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{z}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{\frac{\sqrt[3]{t}}{3}}{\sqrt[3]{y}}double f(double x, double y, double z, double t) {
double r853246 = x;
double r853247 = y;
double r853248 = z;
double r853249 = 3.0;
double r853250 = r853248 * r853249;
double r853251 = r853247 / r853250;
double r853252 = r853246 - r853251;
double r853253 = t;
double r853254 = r853250 * r853247;
double r853255 = r853253 / r853254;
double r853256 = r853252 + r853255;
return r853256;
}
double f(double x, double y, double z, double t) {
double r853257 = x;
double r853258 = y;
double r853259 = z;
double r853260 = 3.0;
double r853261 = r853259 * r853260;
double r853262 = r853258 / r853261;
double r853263 = r853257 - r853262;
double r853264 = t;
double r853265 = cbrt(r853264);
double r853266 = r853265 * r853265;
double r853267 = r853266 / r853259;
double r853268 = cbrt(r853258);
double r853269 = r853268 * r853268;
double r853270 = r853267 / r853269;
double r853271 = r853265 / r853260;
double r853272 = r853271 / r853268;
double r853273 = r853270 * r853272;
double r853274 = r853263 + r853273;
return r853274;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.7 |
| Herbie | 1.0 |
Initial program 3.7
rmApplied associate-/r*1.7
rmApplied add-cube-cbrt2.0
Applied add-cube-cbrt2.0
Applied times-frac2.0
Applied times-frac1.0
Final simplification1.0
herbie shell --seed 2020083 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:precision binary64
:herbie-target
(+ (- x (/ y (* z 3))) (/ (/ t (* z 3)) y))
(+ (- x (/ y (* z 3))) (/ t (* (* z 3) y))))