x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -1.1516848962976041 \cdot 10^{-212}:\\
\;\;\;\;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 6.35072336715454517 \cdot 10^{-134}:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \frac{t - x}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r1458848 = x;
double r1458849 = y;
double r1458850 = z;
double r1458851 = r1458849 - r1458850;
double r1458852 = t;
double r1458853 = r1458852 - r1458848;
double r1458854 = r1458851 * r1458853;
double r1458855 = a;
double r1458856 = r1458855 - r1458850;
double r1458857 = r1458854 / r1458856;
double r1458858 = r1458848 + r1458857;
return r1458858;
}
double f(double x, double y, double z, double t, double a) {
double r1458859 = a;
double r1458860 = -1.1516848962976041e-212;
bool r1458861 = r1458859 <= r1458860;
double r1458862 = x;
double r1458863 = y;
double r1458864 = z;
double r1458865 = r1458863 - r1458864;
double r1458866 = r1458859 - r1458864;
double r1458867 = cbrt(r1458866);
double r1458868 = r1458867 * r1458867;
double r1458869 = r1458865 / r1458868;
double r1458870 = t;
double r1458871 = r1458870 - r1458862;
double r1458872 = r1458871 / r1458867;
double r1458873 = r1458869 * r1458872;
double r1458874 = r1458862 + r1458873;
double r1458875 = 6.350723367154545e-134;
bool r1458876 = r1458859 <= r1458875;
double r1458877 = r1458862 * r1458863;
double r1458878 = r1458877 / r1458864;
double r1458879 = r1458878 + r1458870;
double r1458880 = r1458870 * r1458863;
double r1458881 = r1458880 / r1458864;
double r1458882 = r1458879 - r1458881;
double r1458883 = cbrt(r1458868);
double r1458884 = r1458869 / r1458883;
double r1458885 = cbrt(r1458867);
double r1458886 = r1458871 / r1458885;
double r1458887 = r1458884 * r1458886;
double r1458888 = r1458862 + r1458887;
double r1458889 = r1458876 ? r1458882 : r1458888;
double r1458890 = r1458861 ? r1458874 : r1458889;
return r1458890;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.1 |
|---|---|
| Target | 12.2 |
| Herbie | 10.5 |
if a < -1.1516848962976041e-212Initial program 22.8
rmApplied add-cube-cbrt23.2
Applied times-frac10.8
if -1.1516848962976041e-212 < a < 6.350723367154545e-134Initial program 29.9
Taylor expanded around inf 12.7
if 6.350723367154545e-134 < a Initial program 22.5
rmApplied add-cube-cbrt22.9
Applied times-frac9.2
rmApplied add-cube-cbrt9.2
Applied cbrt-prod9.2
Applied *-un-lft-identity9.2
Applied times-frac9.2
Applied associate-*r*9.1
Simplified9.1
Final simplification10.5
herbie shell --seed 2020057
(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))))