x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -8.61793576865449663 \cdot 10^{-88}:\\
\;\;\;\;x + \left(\sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right) \cdot \left(\sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \frac{t - x}{\sqrt[3]{a - z}}\right)\\
\mathbf{elif}\;a \le -1.65196522655316837 \cdot 10^{-188}:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{elif}\;a \le -2.1818450075179132 \cdot 10^{-257}:\\
\;\;\;\;x + \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{t - x}{\sqrt[3]{a - z}}\right)\\
\mathbf{elif}\;a \le 1.30824080989720845 \cdot 10^{-125}:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \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{t - x}{\sqrt[3]{a - z}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r567594 = x;
double r567595 = y;
double r567596 = z;
double r567597 = r567595 - r567596;
double r567598 = t;
double r567599 = r567598 - r567594;
double r567600 = r567597 * r567599;
double r567601 = a;
double r567602 = r567601 - r567596;
double r567603 = r567600 / r567602;
double r567604 = r567594 + r567603;
return r567604;
}
double f(double x, double y, double z, double t, double a) {
double r567605 = a;
double r567606 = -8.617935768654497e-88;
bool r567607 = r567605 <= r567606;
double r567608 = x;
double r567609 = y;
double r567610 = z;
double r567611 = r567609 - r567610;
double r567612 = r567605 - r567610;
double r567613 = cbrt(r567612);
double r567614 = r567613 * r567613;
double r567615 = r567611 / r567614;
double r567616 = cbrt(r567615);
double r567617 = r567616 * r567616;
double r567618 = t;
double r567619 = r567618 - r567608;
double r567620 = r567619 / r567613;
double r567621 = r567616 * r567620;
double r567622 = r567617 * r567621;
double r567623 = r567608 + r567622;
double r567624 = -1.6519652265531684e-188;
bool r567625 = r567605 <= r567624;
double r567626 = r567608 * r567609;
double r567627 = r567626 / r567610;
double r567628 = r567627 + r567618;
double r567629 = r567618 * r567609;
double r567630 = r567629 / r567610;
double r567631 = r567628 - r567630;
double r567632 = -2.1818450075179132e-257;
bool r567633 = r567605 <= r567632;
double r567634 = cbrt(r567611);
double r567635 = r567634 * r567634;
double r567636 = r567635 / r567613;
double r567637 = r567634 / r567613;
double r567638 = r567637 * r567620;
double r567639 = r567636 * r567638;
double r567640 = r567608 + r567639;
double r567641 = 1.3082408098972084e-125;
bool r567642 = r567605 <= r567641;
double r567643 = r567642 ? r567631 : r567640;
double r567644 = r567633 ? r567640 : r567643;
double r567645 = r567625 ? r567631 : r567644;
double r567646 = r567607 ? r567623 : r567645;
return r567646;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.6 |
|---|---|
| Target | 12.0 |
| Herbie | 11.2 |
if a < -8.617935768654497e-88Initial program 22.2
rmApplied add-cube-cbrt22.6
Applied times-frac8.9
rmApplied add-cube-cbrt9.0
Applied associate-*l*9.0
if -8.617935768654497e-88 < a < -1.6519652265531684e-188 or -2.1818450075179132e-257 < a < 1.3082408098972084e-125Initial program 29.6
Taylor expanded around inf 16.2
if -1.6519652265531684e-188 < a < -2.1818450075179132e-257 or 1.3082408098972084e-125 < a Initial program 23.5
rmApplied add-cube-cbrt23.9
Applied times-frac10.3
rmApplied add-cube-cbrt10.2
Applied times-frac10.2
Applied associate-*l*10.1
Final simplification11.2
herbie shell --seed 2020024
(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))))