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}:\\
\;\;\;\;\left(\frac{t \cdot y}{a} - \frac{z}{\frac{a}{y}}\right) + x\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \left(\frac{\sqrt[3]{y}}{a} \cdot \left(t - z\right)\right) + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r250279 = x;
double r250280 = y;
double r250281 = z;
double r250282 = t;
double r250283 = r250281 - r250282;
double r250284 = r250280 * r250283;
double r250285 = a;
double r250286 = r250284 / r250285;
double r250287 = r250279 - r250286;
return r250287;
}
double f(double x, double y, double z, double t, double a) {
double r250288 = y;
double r250289 = -4.014663754654606e+20;
bool r250290 = r250288 <= r250289;
double r250291 = t;
double r250292 = a;
double r250293 = r250291 / r250292;
double r250294 = z;
double r250295 = r250294 / r250292;
double r250296 = r250293 - r250295;
double r250297 = r250296 * r250288;
double r250298 = x;
double r250299 = r250297 + r250298;
double r250300 = 8.154301343153642e+100;
bool r250301 = r250288 <= r250300;
double r250302 = r250291 * r250288;
double r250303 = r250302 / r250292;
double r250304 = r250292 / r250288;
double r250305 = r250294 / r250304;
double r250306 = r250303 - r250305;
double r250307 = r250306 + r250298;
double r250308 = cbrt(r250288);
double r250309 = r250308 * r250308;
double r250310 = r250308 / r250292;
double r250311 = r250291 - r250294;
double r250312 = r250310 * r250311;
double r250313 = r250309 * r250312;
double r250314 = r250313 + r250298;
double r250315 = r250301 ? r250307 : r250314;
double r250316 = r250290 ? r250299 : r250315;
return r250316;
}




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 associate-/r/4.1
Applied associate-/r/0.7
Applied distribute-rgt-out--0.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)))