x + \frac{y \cdot \left(z - t\right)}{a - t}x + \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \frac{\sqrt[3]{y}}{\frac{\sqrt[3]{a - t}}{z - t}}double f(double x, double y, double z, double t, double a) {
double r363075 = x;
double r363076 = y;
double r363077 = z;
double r363078 = t;
double r363079 = r363077 - r363078;
double r363080 = r363076 * r363079;
double r363081 = a;
double r363082 = r363081 - r363078;
double r363083 = r363080 / r363082;
double r363084 = r363075 + r363083;
return r363084;
}
double f(double x, double y, double z, double t, double a) {
double r363085 = x;
double r363086 = y;
double r363087 = cbrt(r363086);
double r363088 = r363087 * r363087;
double r363089 = a;
double r363090 = t;
double r363091 = r363089 - r363090;
double r363092 = cbrt(r363091);
double r363093 = r363092 * r363092;
double r363094 = r363088 / r363093;
double r363095 = z;
double r363096 = r363095 - r363090;
double r363097 = r363092 / r363096;
double r363098 = r363087 / r363097;
double r363099 = r363094 * r363098;
double r363100 = r363085 + r363099;
return r363100;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.4 |
|---|---|
| Target | 1.2 |
| Herbie | 1.1 |
Initial program 10.4
rmApplied associate-/l*1.2
rmApplied *-un-lft-identity1.2
Applied add-cube-cbrt1.7
Applied times-frac1.7
Applied add-cube-cbrt1.8
Applied times-frac1.1
Simplified1.1
Final simplification1.1
herbie shell --seed 2019326
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))