x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -1.545922735716026296945674028524282471671 \cdot 10^{124}:\\
\;\;\;\;x - y \cdot \frac{z - t}{a}\\
\mathbf{elif}\;y \le 6.578616508199666559589214477101321950077 \cdot 10^{-31}:\\
\;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;x - y \cdot \frac{z - t}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r14340913 = x;
double r14340914 = y;
double r14340915 = z;
double r14340916 = t;
double r14340917 = r14340915 - r14340916;
double r14340918 = r14340914 * r14340917;
double r14340919 = a;
double r14340920 = r14340918 / r14340919;
double r14340921 = r14340913 - r14340920;
return r14340921;
}
double f(double x, double y, double z, double t, double a) {
double r14340922 = y;
double r14340923 = -1.5459227357160263e+124;
bool r14340924 = r14340922 <= r14340923;
double r14340925 = x;
double r14340926 = z;
double r14340927 = t;
double r14340928 = r14340926 - r14340927;
double r14340929 = a;
double r14340930 = r14340928 / r14340929;
double r14340931 = r14340922 * r14340930;
double r14340932 = r14340925 - r14340931;
double r14340933 = 6.5786165081996666e-31;
bool r14340934 = r14340922 <= r14340933;
double r14340935 = r14340922 * r14340928;
double r14340936 = r14340935 / r14340929;
double r14340937 = r14340925 - r14340936;
double r14340938 = r14340934 ? r14340937 : r14340932;
double r14340939 = r14340924 ? r14340932 : r14340938;
return r14340939;
}




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.7 |
| Herbie | 1.1 |
if y < -1.5459227357160263e+124 or 6.5786165081996666e-31 < y Initial program 17.1
rmApplied *-un-lft-identity17.1
Applied times-frac0.9
Simplified0.9
if -1.5459227357160263e+124 < y < 6.5786165081996666e-31Initial program 1.3
rmApplied clear-num1.3
Taylor expanded around 0 1.3
Simplified1.3
Final simplification1.1
herbie shell --seed 2019169
(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)))