\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -9.69352787633815922929071472670459335417 \cdot 10^{-114}:\\
\;\;\;\;\left(x + y\right) - \left(\sqrt[3]{\left(\frac{\frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t}}}{\sqrt[3]{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \frac{y}{\sqrt[3]{\sqrt[3]{a - t}}}\right) \cdot \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{a - t}}} \cdot \sqrt[3]{\left(\frac{\frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t}}}{\sqrt[3]{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \frac{y}{\sqrt[3]{\sqrt[3]{a - t}}}\right) \cdot \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{a - t}}}\right) \cdot \sqrt[3]{\left(\frac{\frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t}}}{\sqrt[3]{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \frac{y}{\sqrt[3]{\sqrt[3]{a - t}}}\right) \cdot \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{a - t}}}\\
\mathbf{elif}\;a \le 1.889084039169875659727922857236046312161 \cdot 10^{-110}:\\
\;\;\;\;\frac{z \cdot y}{t} + x\\
\mathbf{elif}\;a \le 5.919178498880237805604501360892005847147 \cdot 10^{-44}:\\
\;\;\;\;\left(x + y\right) - \left(\sqrt[3]{\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \sqrt[3]{\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}}\right) \cdot \left(\sqrt[3]{\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \frac{y}{\sqrt[3]{a - t}}\right)\\
\mathbf{elif}\;a \le 9.934875400147095918607310666158699856074 \cdot 10^{-12}:\\
\;\;\;\;\frac{z \cdot y}{t} + x\\
\mathbf{else}:\\
\;\;\;\;\left(x + y\right) - \frac{z - t}{\frac{a - t}{y}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r398800 = x;
double r398801 = y;
double r398802 = r398800 + r398801;
double r398803 = z;
double r398804 = t;
double r398805 = r398803 - r398804;
double r398806 = r398805 * r398801;
double r398807 = a;
double r398808 = r398807 - r398804;
double r398809 = r398806 / r398808;
double r398810 = r398802 - r398809;
return r398810;
}
double f(double x, double y, double z, double t, double a) {
double r398811 = a;
double r398812 = -9.693527876338159e-114;
bool r398813 = r398811 <= r398812;
double r398814 = x;
double r398815 = y;
double r398816 = r398814 + r398815;
double r398817 = z;
double r398818 = t;
double r398819 = r398817 - r398818;
double r398820 = cbrt(r398819);
double r398821 = r398811 - r398818;
double r398822 = cbrt(r398821);
double r398823 = r398820 / r398822;
double r398824 = r398822 * r398822;
double r398825 = cbrt(r398824);
double r398826 = r398823 / r398825;
double r398827 = cbrt(r398822);
double r398828 = r398815 / r398827;
double r398829 = r398826 * r398828;
double r398830 = r398820 * r398820;
double r398831 = r398830 / r398822;
double r398832 = r398829 * r398831;
double r398833 = cbrt(r398832);
double r398834 = r398833 * r398833;
double r398835 = r398834 * r398833;
double r398836 = r398816 - r398835;
double r398837 = 1.8890840391698757e-110;
bool r398838 = r398811 <= r398837;
double r398839 = r398817 * r398815;
double r398840 = r398839 / r398818;
double r398841 = r398840 + r398814;
double r398842 = 5.919178498880238e-44;
bool r398843 = r398811 <= r398842;
double r398844 = r398819 / r398824;
double r398845 = cbrt(r398844);
double r398846 = r398845 * r398845;
double r398847 = r398815 / r398822;
double r398848 = r398845 * r398847;
double r398849 = r398846 * r398848;
double r398850 = r398816 - r398849;
double r398851 = 9.934875400147096e-12;
bool r398852 = r398811 <= r398851;
double r398853 = r398821 / r398815;
double r398854 = r398819 / r398853;
double r398855 = r398816 - r398854;
double r398856 = r398852 ? r398841 : r398855;
double r398857 = r398843 ? r398850 : r398856;
double r398858 = r398838 ? r398841 : r398857;
double r398859 = r398813 ? r398836 : r398858;
return r398859;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 16.6 |
|---|---|
| Target | 8.4 |
| Herbie | 9.7 |
if a < -9.693527876338159e-114Initial program 15.2
rmApplied add-cube-cbrt15.3
Applied times-frac8.4
rmApplied add-cube-cbrt8.4
Applied cbrt-prod8.5
Applied *-un-lft-identity8.5
Applied times-frac8.5
Applied associate-*r*8.5
Simplified8.4
rmApplied *-un-lft-identity8.4
Applied add-cube-cbrt8.5
Applied times-frac8.5
Applied times-frac8.5
Applied associate-*l*8.3
rmApplied add-cube-cbrt8.3
Simplified8.3
Simplified8.3
if -9.693527876338159e-114 < a < 1.8890840391698757e-110 or 5.919178498880238e-44 < a < 9.934875400147096e-12Initial program 20.0
Taylor expanded around inf 12.5
if 1.8890840391698757e-110 < a < 5.919178498880238e-44Initial program 15.6
rmApplied add-cube-cbrt15.9
Applied times-frac14.9
rmApplied add-cube-cbrt14.9
Applied associate-*l*14.9
if 9.934875400147096e-12 < a Initial program 14.3
rmApplied associate-/l*6.8
Final simplification9.7
herbie shell --seed 2019303
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-7) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.47542934445772333e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))