\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -6.2755159521377276 \cdot 10^{-71}:\\
\;\;\;\;x + \left(y - \left(\left(z - t\right) \cdot \frac{\sqrt[3]{y} \cdot \left(\sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right)}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{a - t}}\right)\\
\mathbf{elif}\;a \le 1.2029862383154317 \cdot 10^{-78}:\\
\;\;\;\;x + \frac{z \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - \left(z - t\right) \cdot \frac{y}{a - t}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r601214 = x;
double r601215 = y;
double r601216 = r601214 + r601215;
double r601217 = z;
double r601218 = t;
double r601219 = r601217 - r601218;
double r601220 = r601219 * r601215;
double r601221 = a;
double r601222 = r601221 - r601218;
double r601223 = r601220 / r601222;
double r601224 = r601216 - r601223;
return r601224;
}
double f(double x, double y, double z, double t, double a) {
double r601225 = a;
double r601226 = -6.2755159521377276e-71;
bool r601227 = r601225 <= r601226;
double r601228 = x;
double r601229 = y;
double r601230 = z;
double r601231 = t;
double r601232 = r601230 - r601231;
double r601233 = cbrt(r601229);
double r601234 = r601233 * r601233;
double r601235 = cbrt(r601234);
double r601236 = cbrt(r601233);
double r601237 = r601235 * r601236;
double r601238 = r601233 * r601237;
double r601239 = r601225 - r601231;
double r601240 = cbrt(r601239);
double r601241 = r601240 * r601240;
double r601242 = r601238 / r601241;
double r601243 = r601232 * r601242;
double r601244 = r601233 / r601240;
double r601245 = r601243 * r601244;
double r601246 = r601229 - r601245;
double r601247 = r601228 + r601246;
double r601248 = 1.2029862383154317e-78;
bool r601249 = r601225 <= r601248;
double r601250 = r601230 * r601229;
double r601251 = r601250 / r601231;
double r601252 = r601228 + r601251;
double r601253 = r601229 / r601239;
double r601254 = r601232 * r601253;
double r601255 = r601229 - r601254;
double r601256 = r601228 + r601255;
double r601257 = r601249 ? r601252 : r601256;
double r601258 = r601227 ? r601247 : r601257;
return r601258;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 16.5 |
|---|---|
| Target | 8.6 |
| Herbie | 9.2 |
if a < -6.2755159521377276e-71Initial program 15.1
rmApplied *-un-lft-identity15.1
Applied times-frac8.3
Simplified8.3
rmApplied associate--l+6.9
rmApplied add-cube-cbrt8.0
Applied add-cube-cbrt8.2
Applied times-frac8.2
Applied associate-*r*7.4
rmApplied add-cube-cbrt7.4
Applied cbrt-prod7.4
if -6.2755159521377276e-71 < a < 1.2029862383154317e-78Initial program 19.2
rmApplied *-un-lft-identity19.2
Applied times-frac18.2
Simplified18.2
rmApplied associate--l+13.0
rmApplied add-cube-cbrt17.3
Applied add-cube-cbrt18.1
Applied times-frac18.1
Applied associate-*r*15.7
Taylor expanded around inf 12.7
if 1.2029862383154317e-78 < a Initial program 14.8
rmApplied *-un-lft-identity14.8
Applied times-frac8.9
Simplified8.9
rmApplied associate--l+7.1
Final simplification9.2
herbie shell --seed 2020039
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-07) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.4754293444577233e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))