x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -3.89067874723543516820715729027922883886 \cdot 10^{-54}:\\
\;\;\;\;x + y \cdot \frac{t - z}{a}\\
\mathbf{elif}\;y \le 4.721761730699554045903946521897173928976 \cdot 10^{-150}:\\
\;\;\;\;x + \frac{1}{\sqrt[3]{a} \cdot \sqrt[3]{a}} \cdot \frac{t - z}{\frac{\sqrt[3]{a}}{y}}\\
\mathbf{else}:\\
\;\;\;\;\left(x + \frac{t}{\frac{a}{y}}\right) - \frac{y}{\frac{a}{z}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r253852 = x;
double r253853 = y;
double r253854 = z;
double r253855 = t;
double r253856 = r253854 - r253855;
double r253857 = r253853 * r253856;
double r253858 = a;
double r253859 = r253857 / r253858;
double r253860 = r253852 - r253859;
return r253860;
}
double f(double x, double y, double z, double t, double a) {
double r253861 = y;
double r253862 = -3.890678747235435e-54;
bool r253863 = r253861 <= r253862;
double r253864 = x;
double r253865 = t;
double r253866 = z;
double r253867 = r253865 - r253866;
double r253868 = a;
double r253869 = r253867 / r253868;
double r253870 = r253861 * r253869;
double r253871 = r253864 + r253870;
double r253872 = 4.721761730699554e-150;
bool r253873 = r253861 <= r253872;
double r253874 = 1.0;
double r253875 = cbrt(r253868);
double r253876 = r253875 * r253875;
double r253877 = r253874 / r253876;
double r253878 = r253875 / r253861;
double r253879 = r253867 / r253878;
double r253880 = r253877 * r253879;
double r253881 = r253864 + r253880;
double r253882 = r253868 / r253861;
double r253883 = r253865 / r253882;
double r253884 = r253864 + r253883;
double r253885 = r253868 / r253866;
double r253886 = r253861 / r253885;
double r253887 = r253884 - r253886;
double r253888 = r253873 ? r253881 : r253887;
double r253889 = r253863 ? r253871 : r253888;
return r253889;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.2 |
|---|---|
| Target | 0.8 |
| Herbie | 2.0 |
if y < -3.890678747235435e-54Initial program 12.7
Simplified3.0
rmApplied div-inv3.1
Applied associate-*l*1.4
Simplified1.3
if -3.890678747235435e-54 < y < 4.721761730699554e-150Initial program 0.5
Simplified2.1
rmApplied add-cube-cbrt2.5
Applied *-un-lft-identity2.5
Applied times-frac2.5
Applied associate-*l*1.0
Simplified1.1
if 4.721761730699554e-150 < y Initial program 9.1
Simplified2.5
Taylor expanded around 0 9.1
Simplified3.6
Final simplification2.0
herbie shell --seed 2019195
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
:herbie-target
(if (< y -1.0761266216389975e-10) (- x (/ 1.0 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (- x (/ (* y (- z t)) a)) (- x (/ y (/ a (- z t))))))
(- x (/ (* y (- z t)) a)))