x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le -2.869692918617161890978375910455662995568 \cdot 10^{-291}:\\
\;\;\;\;x + \left(\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{\sqrt[3]{t - x} \cdot \left(\left(\sqrt[3]{\sqrt[3]{t - x}} \cdot \sqrt[3]{\sqrt[3]{t - x}}\right) \cdot \sqrt[3]{\sqrt[3]{t - x}}\right)}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le 0.0:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \left(\frac{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}{\sqrt[3]{a - z}} \cdot \left(\frac{\sqrt[3]{y - z}}{\sqrt[3]{a - z}} \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right)\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r468290 = x;
double r468291 = y;
double r468292 = z;
double r468293 = r468291 - r468292;
double r468294 = t;
double r468295 = r468294 - r468290;
double r468296 = r468293 * r468295;
double r468297 = a;
double r468298 = r468297 - r468292;
double r468299 = r468296 / r468298;
double r468300 = r468290 + r468299;
return r468300;
}
double f(double x, double y, double z, double t, double a) {
double r468301 = x;
double r468302 = y;
double r468303 = z;
double r468304 = r468302 - r468303;
double r468305 = t;
double r468306 = r468305 - r468301;
double r468307 = r468304 * r468306;
double r468308 = a;
double r468309 = r468308 - r468303;
double r468310 = r468307 / r468309;
double r468311 = r468301 + r468310;
double r468312 = -2.869692918617162e-291;
bool r468313 = r468311 <= r468312;
double r468314 = cbrt(r468309);
double r468315 = r468314 * r468314;
double r468316 = r468304 / r468315;
double r468317 = cbrt(r468306);
double r468318 = cbrt(r468317);
double r468319 = r468318 * r468318;
double r468320 = r468319 * r468318;
double r468321 = r468317 * r468320;
double r468322 = cbrt(r468315);
double r468323 = r468321 / r468322;
double r468324 = r468316 * r468323;
double r468325 = cbrt(r468314);
double r468326 = r468317 / r468325;
double r468327 = r468324 * r468326;
double r468328 = r468301 + r468327;
double r468329 = 0.0;
bool r468330 = r468311 <= r468329;
double r468331 = r468301 * r468302;
double r468332 = r468331 / r468303;
double r468333 = r468332 + r468305;
double r468334 = r468305 * r468302;
double r468335 = r468334 / r468303;
double r468336 = r468333 - r468335;
double r468337 = cbrt(r468304);
double r468338 = r468337 * r468337;
double r468339 = r468338 / r468314;
double r468340 = r468337 / r468314;
double r468341 = r468317 * r468317;
double r468342 = r468341 / r468322;
double r468343 = r468340 * r468342;
double r468344 = r468339 * r468343;
double r468345 = r468344 * r468326;
double r468346 = r468301 + r468345;
double r468347 = r468330 ? r468336 : r468346;
double r468348 = r468313 ? r468328 : r468347;
return r468348;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.2 |
|---|---|
| Target | 12.2 |
| Herbie | 8.4 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -2.869692918617162e-291Initial program 21.7
rmApplied add-cube-cbrt22.2
Applied times-frac8.5
rmApplied add-cube-cbrt8.6
Applied cbrt-prod8.6
Applied add-cube-cbrt8.8
Applied times-frac8.8
Applied associate-*r*8.0
rmApplied add-cube-cbrt8.1
if -2.869692918617162e-291 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 0.0Initial program 60.0
Taylor expanded around inf 18.6
if 0.0 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 20.2
rmApplied add-cube-cbrt20.7
Applied times-frac7.6
rmApplied add-cube-cbrt7.6
Applied cbrt-prod7.7
Applied add-cube-cbrt7.8
Applied times-frac7.8
Applied associate-*r*7.0
rmApplied add-cube-cbrt7.0
Applied times-frac7.0
Applied associate-*l*6.8
rmApplied pow16.8
Final simplification8.4
herbie shell --seed 2019323
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< z -1.2536131056095036e+188) (- t (* (/ y z) (- t x))) (if (< z 4.446702369113811e+64) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x)))))
(+ x (/ (* (- y z) (- t x)) (- a z))))