x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;x + \frac{y \cdot \left(z - x\right)}{t} \le -3.57164337169283755 \cdot 10^{297}:\\
\;\;\;\;x + \frac{z - x}{\frac{t}{y}}\\
\mathbf{elif}\;x + \frac{y \cdot \left(z - x\right)}{t} \le 1.83014942255142419 \cdot 10^{297}:\\
\;\;\;\;x + \frac{y \cdot \left(z - x\right)}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\frac{t}{z - x}}\\
\end{array}double f(double x, double y, double z, double t) {
double r405890 = x;
double r405891 = y;
double r405892 = z;
double r405893 = r405892 - r405890;
double r405894 = r405891 * r405893;
double r405895 = t;
double r405896 = r405894 / r405895;
double r405897 = r405890 + r405896;
return r405897;
}
double f(double x, double y, double z, double t) {
double r405898 = x;
double r405899 = y;
double r405900 = z;
double r405901 = r405900 - r405898;
double r405902 = r405899 * r405901;
double r405903 = t;
double r405904 = r405902 / r405903;
double r405905 = r405898 + r405904;
double r405906 = -3.5716433716928375e+297;
bool r405907 = r405905 <= r405906;
double r405908 = r405903 / r405899;
double r405909 = r405901 / r405908;
double r405910 = r405898 + r405909;
double r405911 = 1.8301494225514242e+297;
bool r405912 = r405905 <= r405911;
double r405913 = r405903 / r405901;
double r405914 = r405899 / r405913;
double r405915 = r405898 + r405914;
double r405916 = r405912 ? r405905 : r405915;
double r405917 = r405907 ? r405910 : r405916;
return r405917;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.2 |
|---|---|
| Target | 2.0 |
| Herbie | 0.8 |
if (+ x (/ (* y (- z x)) t)) < -3.5716433716928375e+297Initial program 51.7
Taylor expanded around 0 51.7
Simplified1.4
if -3.5716433716928375e+297 < (+ x (/ (* y (- z x)) t)) < 1.8301494225514242e+297Initial program 0.6
if 1.8301494225514242e+297 < (+ x (/ (* y (- z x)) t)) Initial program 53.1
rmApplied associate-/l*3.0
Final simplification0.8
herbie shell --seed 2020046
(FPCore (x y z t)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"
:precision binary64
:herbie-target
(- x (+ (* x (/ y t)) (* (- z) (/ y t))))
(+ x (/ (* y (- z x)) t)))