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 r362305 = x;
double r362306 = y;
double r362307 = z;
double r362308 = r362307 - r362305;
double r362309 = r362306 * r362308;
double r362310 = t;
double r362311 = r362309 / r362310;
double r362312 = r362305 + r362311;
return r362312;
}
double f(double x, double y, double z, double t) {
double r362313 = x;
double r362314 = y;
double r362315 = z;
double r362316 = r362315 - r362313;
double r362317 = r362314 * r362316;
double r362318 = t;
double r362319 = r362317 / r362318;
double r362320 = r362313 + r362319;
double r362321 = -3.5716433716928375e+297;
bool r362322 = r362320 <= r362321;
double r362323 = r362318 / r362314;
double r362324 = r362316 / r362323;
double r362325 = r362313 + r362324;
double r362326 = 1.8301494225514242e+297;
bool r362327 = r362320 <= r362326;
double r362328 = r362318 / r362316;
double r362329 = r362314 / r362328;
double r362330 = r362313 + r362329;
double r362331 = r362327 ? r362320 : r362330;
double r362332 = r362322 ? r362325 : r362331;
return r362332;
}




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)))