x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -1.3251830678825456 \cdot 10^{-80}:\\
\;\;\;\;x + \frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{a - z}}\\
\mathbf{elif}\;a \le 8.7380390302425882 \cdot 10^{-128}:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\frac{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}{\sqrt[3]{a - z}}}{\sqrt[3]{\sqrt[3]{a - z}}} \cdot \left(\frac{\frac{\left(\sqrt[3]{\sqrt[3]{y - z}} \cdot \sqrt[3]{\sqrt[3]{y - z}}\right) \cdot \sqrt[3]{\sqrt[3]{y - z}}}{\sqrt[3]{a - z}}}{\sqrt[3]{\sqrt[3]{a - z}}} \cdot \frac{t - x}{\sqrt[3]{\sqrt[3]{a - z}}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r602700 = x;
double r602701 = y;
double r602702 = z;
double r602703 = r602701 - r602702;
double r602704 = t;
double r602705 = r602704 - r602700;
double r602706 = r602703 * r602705;
double r602707 = a;
double r602708 = r602707 - r602702;
double r602709 = r602706 / r602708;
double r602710 = r602700 + r602709;
return r602710;
}
double f(double x, double y, double z, double t, double a) {
double r602711 = a;
double r602712 = -1.3251830678825456e-80;
bool r602713 = r602711 <= r602712;
double r602714 = x;
double r602715 = y;
double r602716 = z;
double r602717 = r602715 - r602716;
double r602718 = r602711 - r602716;
double r602719 = cbrt(r602718);
double r602720 = r602719 * r602719;
double r602721 = r602717 / r602720;
double r602722 = t;
double r602723 = r602722 - r602714;
double r602724 = r602723 / r602719;
double r602725 = r602721 * r602724;
double r602726 = r602714 + r602725;
double r602727 = 8.738039030242588e-128;
bool r602728 = r602711 <= r602727;
double r602729 = r602714 * r602715;
double r602730 = r602729 / r602716;
double r602731 = r602730 + r602722;
double r602732 = r602722 * r602715;
double r602733 = r602732 / r602716;
double r602734 = r602731 - r602733;
double r602735 = cbrt(r602717);
double r602736 = r602735 * r602735;
double r602737 = r602736 / r602719;
double r602738 = cbrt(r602719);
double r602739 = r602737 / r602738;
double r602740 = cbrt(r602735);
double r602741 = r602740 * r602740;
double r602742 = r602741 * r602740;
double r602743 = r602742 / r602719;
double r602744 = r602743 / r602738;
double r602745 = r602723 / r602738;
double r602746 = r602744 * r602745;
double r602747 = r602739 * r602746;
double r602748 = r602714 + r602747;
double r602749 = r602728 ? r602734 : r602748;
double r602750 = r602713 ? r602726 : r602749;
return r602750;
}




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 | 11.5 |
| Herbie | 11.1 |
if a < -1.3251830678825456e-80Initial program 23.5
rmApplied add-cube-cbrt23.9
Applied times-frac9.0
if -1.3251830678825456e-80 < a < 8.738039030242588e-128Initial program 28.3
Taylor expanded around inf 15.3
if 8.738039030242588e-128 < a Initial program 22.7
rmApplied add-cube-cbrt23.1
Applied times-frac10.2
rmApplied add-cube-cbrt10.4
Applied *-un-lft-identity10.4
Applied times-frac10.4
Applied associate-*r*10.2
Simplified10.2
rmApplied add-cube-cbrt10.2
Applied times-frac10.3
Applied times-frac10.2
Applied associate-*l*9.9
rmApplied add-cube-cbrt9.8
Final simplification11.1
herbie shell --seed 2020100
(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))))