x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -4.58960810667550706 \cdot 10^{-129}:\\
\;\;\;\;x + \frac{y - z}{\left(\sqrt[3]{a - z} \cdot \sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}\right) \cdot \sqrt[3]{\sqrt[3]{a - z}}} \cdot \frac{t - x}{\sqrt[3]{a - z}}\\
\mathbf{elif}\;a \le 7.16030570011128415 \cdot 10^{-200}:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{a - z}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r617317 = x;
double r617318 = y;
double r617319 = z;
double r617320 = r617318 - r617319;
double r617321 = t;
double r617322 = r617321 - r617317;
double r617323 = r617320 * r617322;
double r617324 = a;
double r617325 = r617324 - r617319;
double r617326 = r617323 / r617325;
double r617327 = r617317 + r617326;
return r617327;
}
double f(double x, double y, double z, double t, double a) {
double r617328 = a;
double r617329 = -4.589608106675507e-129;
bool r617330 = r617328 <= r617329;
double r617331 = x;
double r617332 = y;
double r617333 = z;
double r617334 = r617332 - r617333;
double r617335 = r617328 - r617333;
double r617336 = cbrt(r617335);
double r617337 = r617336 * r617336;
double r617338 = cbrt(r617337);
double r617339 = r617336 * r617338;
double r617340 = cbrt(r617336);
double r617341 = r617339 * r617340;
double r617342 = r617334 / r617341;
double r617343 = t;
double r617344 = r617343 - r617331;
double r617345 = r617344 / r617336;
double r617346 = r617342 * r617345;
double r617347 = r617331 + r617346;
double r617348 = 7.160305700111284e-200;
bool r617349 = r617328 <= r617348;
double r617350 = r617331 * r617332;
double r617351 = r617350 / r617333;
double r617352 = r617351 + r617343;
double r617353 = r617343 * r617332;
double r617354 = r617353 / r617333;
double r617355 = r617352 - r617354;
double r617356 = r617334 / r617337;
double r617357 = r617356 * r617345;
double r617358 = r617331 + r617357;
double r617359 = r617349 ? r617355 : r617358;
double r617360 = r617330 ? r617347 : r617359;
return r617360;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.5 |
|---|---|
| Target | 12.0 |
| Herbie | 11.1 |
if a < -4.589608106675507e-129Initial program 23.3
rmApplied add-cube-cbrt23.6
Applied times-frac10.1
rmApplied add-cube-cbrt10.1
Applied cbrt-prod10.2
Applied associate-*r*10.2
if -4.589608106675507e-129 < a < 7.160305700111284e-200Initial program 29.0
Taylor expanded around inf 13.1
if 7.160305700111284e-200 < a Initial program 23.5
rmApplied add-cube-cbrt23.9
Applied times-frac11.0
Final simplification11.1
herbie shell --seed 2020046
(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))))