x + \left(y - x\right) \cdot \frac{z}{t}x + \left(\left(y - x\right) \cdot \frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}\right) \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{t}}double f(double x, double y, double z, double t) {
double r594815 = x;
double r594816 = y;
double r594817 = r594816 - r594815;
double r594818 = z;
double r594819 = t;
double r594820 = r594818 / r594819;
double r594821 = r594817 * r594820;
double r594822 = r594815 + r594821;
return r594822;
}
double f(double x, double y, double z, double t) {
double r594823 = x;
double r594824 = y;
double r594825 = r594824 - r594823;
double r594826 = z;
double r594827 = cbrt(r594826);
double r594828 = r594827 * r594827;
double r594829 = t;
double r594830 = cbrt(r594829);
double r594831 = r594830 * r594830;
double r594832 = r594828 / r594831;
double r594833 = r594825 * r594832;
double r594834 = r594827 / r594830;
double r594835 = r594833 * r594834;
double r594836 = r594823 + r594835;
return r594836;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.9 |
|---|---|
| Target | 2.1 |
| Herbie | 1.0 |
Initial program 1.9
rmApplied add-cube-cbrt2.4
Applied add-cube-cbrt2.6
Applied times-frac2.6
Applied associate-*r*1.0
Final simplification1.0
herbie shell --seed 2020002 +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))))