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.335375383468043 \cdot 10^{-253}:\\
\;\;\;\;x + \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z}}} \cdot \left(\left(\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}}\right)\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le 4.422650758851032 \cdot 10^{-257}:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{y \cdot t}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \left(\frac{\sqrt[3]{y - z}}{\sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{a - z}}\right) \cdot \frac{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}{\sqrt[3]{a - z}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r30362434 = x;
double r30362435 = y;
double r30362436 = z;
double r30362437 = r30362435 - r30362436;
double r30362438 = t;
double r30362439 = r30362438 - r30362434;
double r30362440 = r30362437 * r30362439;
double r30362441 = a;
double r30362442 = r30362441 - r30362436;
double r30362443 = r30362440 / r30362442;
double r30362444 = r30362434 + r30362443;
return r30362444;
}
double f(double x, double y, double z, double t, double a) {
double r30362445 = x;
double r30362446 = y;
double r30362447 = z;
double r30362448 = r30362446 - r30362447;
double r30362449 = t;
double r30362450 = r30362449 - r30362445;
double r30362451 = r30362448 * r30362450;
double r30362452 = a;
double r30362453 = r30362452 - r30362447;
double r30362454 = r30362451 / r30362453;
double r30362455 = r30362445 + r30362454;
double r30362456 = -2.335375383468043e-253;
bool r30362457 = r30362455 <= r30362456;
double r30362458 = cbrt(r30362450);
double r30362459 = cbrt(r30362453);
double r30362460 = cbrt(r30362459);
double r30362461 = r30362458 / r30362460;
double r30362462 = r30362459 * r30362459;
double r30362463 = r30362448 / r30362462;
double r30362464 = cbrt(r30362462);
double r30362465 = cbrt(r30362464);
double r30362466 = r30362465 * r30362465;
double r30362467 = r30362458 / r30362466;
double r30362468 = r30362463 * r30362467;
double r30362469 = r30362458 / r30362465;
double r30362470 = r30362468 * r30362469;
double r30362471 = r30362461 * r30362470;
double r30362472 = r30362445 + r30362471;
double r30362473 = 4.422650758851032e-257;
bool r30362474 = r30362455 <= r30362473;
double r30362475 = r30362445 * r30362446;
double r30362476 = r30362475 / r30362447;
double r30362477 = r30362476 + r30362449;
double r30362478 = r30362446 * r30362449;
double r30362479 = r30362478 / r30362447;
double r30362480 = r30362477 - r30362479;
double r30362481 = cbrt(r30362448);
double r30362482 = r30362481 / r30362459;
double r30362483 = r30362450 / r30362459;
double r30362484 = r30362482 * r30362483;
double r30362485 = r30362481 * r30362481;
double r30362486 = r30362485 / r30362459;
double r30362487 = r30362484 * r30362486;
double r30362488 = r30362445 + r30362487;
double r30362489 = r30362474 ? r30362480 : r30362488;
double r30362490 = r30362457 ? r30362472 : r30362489;
return r30362490;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 25.1 |
|---|---|
| Target | 12.3 |
| Herbie | 10.1 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -2.335375383468043e-253Initial program 22.0
rmApplied add-cube-cbrt22.4
Applied times-frac8.4
rmApplied add-cube-cbrt8.4
Applied cbrt-prod8.5
Applied add-cube-cbrt8.6
Applied times-frac8.7
Applied associate-*r*8.2
rmApplied add-cube-cbrt8.3
Applied times-frac8.3
Applied associate-*r*8.3
if -2.335375383468043e-253 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 4.422650758851032e-257Initial program 52.4
Taylor expanded around inf 24.5
if 4.422650758851032e-257 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 22.6
rmApplied add-cube-cbrt23.2
Applied times-frac9.1
rmApplied add-cube-cbrt9.0
Applied times-frac9.0
Applied associate-*l*8.9
Final simplification10.1
herbie shell --seed 2019165
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
: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))))