x + y \cdot \frac{z - t}{z - a}x + \left(y \cdot \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{z - a} \cdot \sqrt[3]{z - a}}\right) \cdot \frac{\sqrt[3]{z - t}}{\sqrt[3]{z - a}}double f(double x, double y, double z, double t, double a) {
double r350294 = x;
double r350295 = y;
double r350296 = z;
double r350297 = t;
double r350298 = r350296 - r350297;
double r350299 = a;
double r350300 = r350296 - r350299;
double r350301 = r350298 / r350300;
double r350302 = r350295 * r350301;
double r350303 = r350294 + r350302;
return r350303;
}
double f(double x, double y, double z, double t, double a) {
double r350304 = x;
double r350305 = y;
double r350306 = z;
double r350307 = t;
double r350308 = r350306 - r350307;
double r350309 = cbrt(r350308);
double r350310 = r350309 * r350309;
double r350311 = a;
double r350312 = r350306 - r350311;
double r350313 = cbrt(r350312);
double r350314 = r350313 * r350313;
double r350315 = r350310 / r350314;
double r350316 = r350305 * r350315;
double r350317 = r350309 / r350313;
double r350318 = r350316 * r350317;
double r350319 = r350304 + r350318;
return r350319;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.7 |
|---|---|
| Target | 1.5 |
| Herbie | 0.5 |
Initial program 1.7
rmApplied add-cube-cbrt2.2
Applied add-cube-cbrt2.0
Applied times-frac2.0
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2019323
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (* y (/ (- z t) (- z a)))))