x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -401466375465460629504:\\
\;\;\;\;\left(\frac{t}{a} - \frac{z}{a}\right) \cdot y + x\\
\mathbf{elif}\;y \le 8.154301343153642018279670833547796995186 \cdot 10^{100}:\\
\;\;\;\;x + \left(\frac{t \cdot y}{a} - \frac{z}{\frac{a}{y}}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\sqrt[3]{y}}{a} \cdot \left(t - z\right)\right) \cdot \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r288910 = x;
double r288911 = y;
double r288912 = z;
double r288913 = t;
double r288914 = r288912 - r288913;
double r288915 = r288911 * r288914;
double r288916 = a;
double r288917 = r288915 / r288916;
double r288918 = r288910 - r288917;
return r288918;
}
double f(double x, double y, double z, double t, double a) {
double r288919 = y;
double r288920 = -4.014663754654606e+20;
bool r288921 = r288919 <= r288920;
double r288922 = t;
double r288923 = a;
double r288924 = r288922 / r288923;
double r288925 = z;
double r288926 = r288925 / r288923;
double r288927 = r288924 - r288926;
double r288928 = r288927 * r288919;
double r288929 = x;
double r288930 = r288928 + r288929;
double r288931 = 8.154301343153642e+100;
bool r288932 = r288919 <= r288931;
double r288933 = r288922 * r288919;
double r288934 = r288933 / r288923;
double r288935 = r288923 / r288919;
double r288936 = r288925 / r288935;
double r288937 = r288934 - r288936;
double r288938 = r288929 + r288937;
double r288939 = cbrt(r288919);
double r288940 = r288939 / r288923;
double r288941 = r288922 - r288925;
double r288942 = r288940 * r288941;
double r288943 = r288939 * r288939;
double r288944 = r288942 * r288943;
double r288945 = r288944 + r288929;
double r288946 = r288932 ? r288938 : r288945;
double r288947 = r288921 ? r288930 : r288946;
return r288947;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 5.9 |
|---|---|
| Target | 0.7 |
| Herbie | 1.4 |
if y < -4.014663754654606e+20Initial program 15.4
Simplified4.6
rmApplied *-un-lft-identity4.6
Applied add-cube-cbrt5.2
Applied times-frac5.2
Applied associate-*l*2.2
Taylor expanded around 0 15.4
Simplified4.0
rmApplied *-un-lft-identity4.0
Applied *-un-lft-identity4.0
Applied times-frac4.0
Applied *-un-lft-identity4.0
Applied times-frac4.0
Applied *-un-lft-identity4.0
Applied *-un-lft-identity4.0
Applied times-frac4.0
Applied *-un-lft-identity4.0
Applied times-frac4.0
Applied distribute-lft-out--4.0
Simplified0.7
if -4.014663754654606e+20 < y < 8.154301343153642e+100Initial program 1.1
Simplified1.7
rmApplied *-un-lft-identity1.7
Applied add-cube-cbrt2.1
Applied times-frac2.1
Applied associate-*l*5.1
Taylor expanded around 0 1.1
Simplified1.8
Taylor expanded around 0 1.5
Simplified1.5
if 8.154301343153642e+100 < y Initial program 23.0
Simplified5.8
rmApplied *-un-lft-identity5.8
Applied add-cube-cbrt6.4
Applied times-frac6.4
Applied associate-*l*1.6
Final simplification1.4
herbie shell --seed 2019194
(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)))