x + y \cdot \frac{z - t}{a - t}x + \left(y \cdot \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) \cdot \frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t}}double f(double x, double y, double z, double t, double a) {
double r405022 = x;
double r405023 = y;
double r405024 = z;
double r405025 = t;
double r405026 = r405024 - r405025;
double r405027 = a;
double r405028 = r405027 - r405025;
double r405029 = r405026 / r405028;
double r405030 = r405023 * r405029;
double r405031 = r405022 + r405030;
return r405031;
}
double f(double x, double y, double z, double t, double a) {
double r405032 = x;
double r405033 = y;
double r405034 = z;
double r405035 = t;
double r405036 = r405034 - r405035;
double r405037 = cbrt(r405036);
double r405038 = r405037 * r405037;
double r405039 = a;
double r405040 = r405039 - r405035;
double r405041 = cbrt(r405040);
double r405042 = r405041 * r405041;
double r405043 = r405038 / r405042;
double r405044 = r405033 * r405043;
double r405045 = r405037 / r405041;
double r405046 = r405044 * r405045;
double r405047 = r405032 + r405046;
return r405047;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.2 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 1.2
rmApplied add-cube-cbrt1.8
Applied add-cube-cbrt1.6
Applied times-frac1.6
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2019212
(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.50808486055124107e-17) (+ x (* y (/ (- z t) (- a t)))) (if (< y 2.8944268627920891e-49) (+ x (* (* y (- z t)) (/ 1 (- a t)))) (+ x (* y (/ (- z t) (- a t))))))
(+ x (* y (/ (- z t) (- a t)))))