x + \frac{y \cdot \left(z - t\right)}{a - t}\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}} + xdouble f(double x, double y, double z, double t, double a) {
double r470110 = x;
double r470111 = y;
double r470112 = z;
double r470113 = t;
double r470114 = r470112 - r470113;
double r470115 = r470111 * r470114;
double r470116 = a;
double r470117 = r470116 - r470113;
double r470118 = r470115 / r470117;
double r470119 = r470110 + r470118;
return r470119;
}
double f(double x, double y, double z, double t, double a) {
double r470120 = y;
double r470121 = z;
double r470122 = t;
double r470123 = r470121 - r470122;
double r470124 = cbrt(r470123);
double r470125 = r470124 * r470124;
double r470126 = a;
double r470127 = r470126 - r470122;
double r470128 = cbrt(r470127);
double r470129 = r470128 * r470128;
double r470130 = r470125 / r470129;
double r470131 = r470120 * r470130;
double r470132 = r470124 / r470128;
double r470133 = r470131 * r470132;
double r470134 = x;
double r470135 = r470133 + r470134;
return r470135;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 11.0 |
|---|---|
| Target | 1.3 |
| Herbie | 0.5 |
Initial program 11.0
Simplified3.0
rmApplied fma-udef3.0
rmApplied div-inv3.1
Applied associate-*l*1.4
Simplified1.4
rmApplied add-cube-cbrt1.9
Applied add-cube-cbrt1.8
Applied times-frac1.8
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2020027 +o rules:numerics
(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))))