x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;z \le -9.321316198184014864250290572846970188364 \cdot 10^{-37}:\\
\;\;\;\;x - \frac{x - y}{t} \cdot z\\
\mathbf{elif}\;z \le 1.565053397910881773034896102378336415142 \cdot 10^{83}:\\
\;\;\;\;x - \frac{\left(x - y\right) \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;x - \left(\left(x - y\right) \cdot \frac{\sqrt[3]{z}}{t}\right) \cdot \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r723279 = x;
double r723280 = y;
double r723281 = r723280 - r723279;
double r723282 = z;
double r723283 = t;
double r723284 = r723282 / r723283;
double r723285 = r723281 * r723284;
double r723286 = r723279 + r723285;
return r723286;
}
double f(double x, double y, double z, double t) {
double r723287 = z;
double r723288 = -9.321316198184015e-37;
bool r723289 = r723287 <= r723288;
double r723290 = x;
double r723291 = y;
double r723292 = r723290 - r723291;
double r723293 = t;
double r723294 = r723292 / r723293;
double r723295 = r723294 * r723287;
double r723296 = r723290 - r723295;
double r723297 = 1.5650533979108818e+83;
bool r723298 = r723287 <= r723297;
double r723299 = r723292 * r723287;
double r723300 = r723299 / r723293;
double r723301 = r723290 - r723300;
double r723302 = cbrt(r723287);
double r723303 = r723302 / r723293;
double r723304 = r723292 * r723303;
double r723305 = r723302 * r723302;
double r723306 = r723304 * r723305;
double r723307 = r723290 - r723306;
double r723308 = r723298 ? r723301 : r723307;
double r723309 = r723289 ? r723296 : r723308;
return r723309;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.0 |
|---|---|
| Target | 2.2 |
| Herbie | 1.6 |
if z < -9.321316198184015e-37Initial program 2.6
Simplified2.6
rmApplied div-inv2.7
Applied associate-*l*1.6
Simplified1.5
if -9.321316198184015e-37 < z < 1.5650533979108818e+83Initial program 1.2
Simplified1.2
rmApplied *-un-lft-identity1.2
Applied associate-*l*1.2
Simplified1.5
if 1.5650533979108818e+83 < z Initial program 4.7
Simplified4.7
rmApplied *-un-lft-identity4.7
Applied add-cube-cbrt5.4
Applied times-frac5.4
Applied associate-*l*2.3
Final simplification1.6
herbie shell --seed 2019174
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.8867) (+ 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))))