x + y \cdot \frac{z - t}{a - t}x + y \cdot \left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}}{\sqrt[3]{a - t}}\right)double f(double x, double y, double z, double t, double a) {
double r270255 = x;
double r270256 = y;
double r270257 = z;
double r270258 = t;
double r270259 = r270257 - r270258;
double r270260 = a;
double r270261 = r270260 - r270258;
double r270262 = r270259 / r270261;
double r270263 = r270256 * r270262;
double r270264 = r270255 + r270263;
return r270264;
}
double f(double x, double y, double z, double t, double a) {
double r270265 = x;
double r270266 = y;
double r270267 = z;
double r270268 = a;
double r270269 = t;
double r270270 = r270268 - r270269;
double r270271 = r270267 / r270270;
double r270272 = cbrt(r270270);
double r270273 = r270272 * r270272;
double r270274 = r270269 / r270273;
double r270275 = r270274 / r270272;
double r270276 = r270271 - r270275;
double r270277 = r270266 * r270276;
double r270278 = r270265 + r270277;
return r270278;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.3 |
|---|---|
| Target | 0.4 |
| Herbie | 1.6 |
Initial program 1.3
rmApplied div-sub1.3
rmApplied add-cube-cbrt1.6
Applied associate-/r*1.6
Final simplification1.6
herbie shell --seed 2020042
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< y -8.508084860551241e-17) (+ x (* y (/ (- z t) (- a t)))) (if (< y 2.894426862792089e-49) (+ x (* (* y (- z t)) (/ 1 (- a t)))) (+ x (* y (/ (- z t) (- a t))))))
(+ x (* y (/ (- z t) (- a t)))))