x + \left(y - x\right) \cdot \frac{z}{t}\left(\left(\left(y - x\right) \cdot \frac{\sqrt[3]{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \sqrt[3]{\sqrt[3]{z}}}{\sqrt[3]{t}}\right) \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{t}}\right) \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{t}} + xdouble f(double x, double y, double z, double t) {
double r520188 = x;
double r520189 = y;
double r520190 = r520189 - r520188;
double r520191 = z;
double r520192 = t;
double r520193 = r520191 / r520192;
double r520194 = r520190 * r520193;
double r520195 = r520188 + r520194;
return r520195;
}
double f(double x, double y, double z, double t) {
double r520196 = y;
double r520197 = x;
double r520198 = r520196 - r520197;
double r520199 = z;
double r520200 = cbrt(r520199);
double r520201 = r520200 * r520200;
double r520202 = cbrt(r520201);
double r520203 = cbrt(r520200);
double r520204 = r520202 * r520203;
double r520205 = t;
double r520206 = cbrt(r520205);
double r520207 = r520204 / r520206;
double r520208 = r520198 * r520207;
double r520209 = r520200 / r520206;
double r520210 = r520208 * r520209;
double r520211 = r520210 * r520209;
double r520212 = r520211 + r520197;
return r520212;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.6 |
|---|---|
| Target | 1.7 |
| Herbie | 0.9 |
Initial program 1.6
Simplified1.6
rmApplied fma-udef1.6
rmApplied add-cube-cbrt2.1
Applied add-cube-cbrt2.3
Applied times-frac2.3
Applied associate-*r*1.0
rmApplied add-cube-cbrt1.0
Applied cbrt-prod1.0
rmApplied times-frac1.0
Applied associate-*r*0.9
Final simplification0.9
herbie shell --seed 2020100 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:precision binary64
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.887) (+ x (/ (- y x) (/ t z))) (if (< (* (- y x) (/ z t)) -0.0) (+ x (/ (* (- y x) z) t)) (+ x (/ (- y x) (/ t z)))))
(+ x (* (- y x) (/ z t))))