x + \frac{y \cdot \left(z - t\right)}{a - t}\frac{\frac{y}{\frac{\sqrt[3]{a - t}}{\sqrt[3]{z - t}} \cdot \frac{\sqrt[3]{a - t}}{\sqrt[3]{z - t}}}}{\frac{\sqrt[3]{a - t}}{\sqrt[3]{z - t}}} + xdouble f(double x, double y, double z, double t, double a) {
double r23911166 = x;
double r23911167 = y;
double r23911168 = z;
double r23911169 = t;
double r23911170 = r23911168 - r23911169;
double r23911171 = r23911167 * r23911170;
double r23911172 = a;
double r23911173 = r23911172 - r23911169;
double r23911174 = r23911171 / r23911173;
double r23911175 = r23911166 + r23911174;
return r23911175;
}
double f(double x, double y, double z, double t, double a) {
double r23911176 = y;
double r23911177 = a;
double r23911178 = t;
double r23911179 = r23911177 - r23911178;
double r23911180 = cbrt(r23911179);
double r23911181 = z;
double r23911182 = r23911181 - r23911178;
double r23911183 = cbrt(r23911182);
double r23911184 = r23911180 / r23911183;
double r23911185 = r23911184 * r23911184;
double r23911186 = r23911176 / r23911185;
double r23911187 = r23911186 / r23911184;
double r23911188 = x;
double r23911189 = r23911187 + r23911188;
return r23911189;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.8 |
|---|---|
| Target | 1.2 |
| Herbie | 0.5 |
Initial program 10.8
rmApplied associate-/l*1.2
rmApplied add-cube-cbrt1.7
Applied add-cube-cbrt1.6
Applied times-frac1.6
Applied associate-/r*0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019169
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))