x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;\left(z - t\right) \cdot y \le -4.463702555680383129591610974344041882665 \cdot 10^{202}:\\
\;\;\;\;x + y \cdot \left(\frac{t}{a} - \frac{z}{a}\right)\\
\mathbf{elif}\;\left(z - t\right) \cdot y \le 2.770472112777995570095000450343623150183 \cdot 10^{157}:\\
\;\;\;\;x - \frac{1}{\frac{a}{\left(z - t\right) \cdot y}}\\
\mathbf{else}:\\
\;\;\;\;x + y \cdot \left(\frac{t}{a} - \frac{z}{a}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r18552843 = x;
double r18552844 = y;
double r18552845 = z;
double r18552846 = t;
double r18552847 = r18552845 - r18552846;
double r18552848 = r18552844 * r18552847;
double r18552849 = a;
double r18552850 = r18552848 / r18552849;
double r18552851 = r18552843 - r18552850;
return r18552851;
}
double f(double x, double y, double z, double t, double a) {
double r18552852 = z;
double r18552853 = t;
double r18552854 = r18552852 - r18552853;
double r18552855 = y;
double r18552856 = r18552854 * r18552855;
double r18552857 = -4.463702555680383e+202;
bool r18552858 = r18552856 <= r18552857;
double r18552859 = x;
double r18552860 = a;
double r18552861 = r18552853 / r18552860;
double r18552862 = r18552852 / r18552860;
double r18552863 = r18552861 - r18552862;
double r18552864 = r18552855 * r18552863;
double r18552865 = r18552859 + r18552864;
double r18552866 = 2.7704721127779956e+157;
bool r18552867 = r18552856 <= r18552866;
double r18552868 = 1.0;
double r18552869 = r18552860 / r18552856;
double r18552870 = r18552868 / r18552869;
double r18552871 = r18552859 - r18552870;
double r18552872 = r18552867 ? r18552871 : r18552865;
double r18552873 = r18552858 ? r18552865 : r18552872;
return r18552873;
}




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.8 |
| Herbie | 0.8 |
if (* y (- z t)) < -4.463702555680383e+202 or 2.7704721127779956e+157 < (* y (- z t)) Initial program 23.8
Taylor expanded around 0 23.8
Simplified1.9
if -4.463702555680383e+202 < (* y (- z t)) < 2.7704721127779956e+157Initial program 0.5
rmApplied clear-num0.5
Final simplification0.8
herbie shell --seed 2019200
(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)))