x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -9.705632488691707263482218344508917056947 \cdot 10^{-90} \lor \neg \left(a \le 4.16044638182789065447272620236516868583 \cdot 10^{-244}\right):\\
\;\;\;\;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{else}:\\
\;\;\;\;y \cdot \left(\frac{x}{z} - \frac{t}{z}\right) + t\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r652859 = x;
double r652860 = y;
double r652861 = z;
double r652862 = r652860 - r652861;
double r652863 = t;
double r652864 = r652863 - r652859;
double r652865 = r652862 * r652864;
double r652866 = a;
double r652867 = r652866 - r652861;
double r652868 = r652865 / r652867;
double r652869 = r652859 + r652868;
return r652869;
}
double f(double x, double y, double z, double t, double a) {
double r652870 = a;
double r652871 = -9.705632488691707e-90;
bool r652872 = r652870 <= r652871;
double r652873 = 4.1604463818278907e-244;
bool r652874 = r652870 <= r652873;
double r652875 = !r652874;
bool r652876 = r652872 || r652875;
double r652877 = x;
double r652878 = y;
double r652879 = z;
double r652880 = r652878 - r652879;
double r652881 = cbrt(r652880);
double r652882 = r652881 * r652881;
double r652883 = r652870 - r652879;
double r652884 = cbrt(r652883);
double r652885 = r652882 / r652884;
double r652886 = r652881 / r652884;
double r652887 = t;
double r652888 = r652887 - r652877;
double r652889 = r652888 / r652884;
double r652890 = r652886 * r652889;
double r652891 = r652885 * r652890;
double r652892 = r652877 + r652891;
double r652893 = r652877 / r652879;
double r652894 = r652887 / r652879;
double r652895 = r652893 - r652894;
double r652896 = r652878 * r652895;
double r652897 = r652896 + r652887;
double r652898 = r652876 ? r652892 : r652897;
return r652898;
}




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 | 11.9 |
| Herbie | 10.6 |
if a < -9.705632488691707e-90 or 4.1604463818278907e-244 < a Initial program 22.8
rmApplied add-cube-cbrt23.2
Applied times-frac10.3
rmApplied add-cube-cbrt10.2
Applied times-frac10.2
Applied associate-*l*10.0
if -9.705632488691707e-90 < a < 4.1604463818278907e-244Initial program 29.8
rmApplied add-cube-cbrt30.4
Applied times-frac21.1
rmApplied add-cube-cbrt20.8
Applied times-frac20.8
Applied associate-*l*20.4
Taylor expanded around inf 16.3
Simplified13.0
Final simplification10.6
herbie shell --seed 2019350
(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))))