x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;a \le -102833585701505768775598385857036288 \lor a \le 27501089785367.6328125:\\
\;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;x - \frac{y}{1} \cdot \frac{\frac{1}{a}}{\frac{\sqrt{1}}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r261391 = x;
double r261392 = y;
double r261393 = z;
double r261394 = t;
double r261395 = r261393 - r261394;
double r261396 = r261392 * r261395;
double r261397 = a;
double r261398 = r261396 / r261397;
double r261399 = r261391 - r261398;
return r261399;
}
double f(double x, double y, double z, double t, double a) {
double r261400 = a;
double r261401 = -1.0283358570150577e+35;
bool r261402 = r261400 <= r261401;
double r261403 = 27501089785367.633;
bool r261404 = r261400 <= r261403;
bool r261405 = r261402 || r261404;
double r261406 = x;
double r261407 = y;
double r261408 = z;
double r261409 = t;
double r261410 = r261408 - r261409;
double r261411 = r261407 * r261410;
double r261412 = r261411 / r261400;
double r261413 = r261406 - r261412;
double r261414 = 1.0;
double r261415 = r261407 / r261414;
double r261416 = r261414 / r261400;
double r261417 = sqrt(r261414);
double r261418 = r261417 / r261410;
double r261419 = r261416 / r261418;
double r261420 = r261415 * r261419;
double r261421 = r261406 - r261420;
double r261422 = r261405 ? r261413 : r261421;
return r261422;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.0 |
|---|---|
| Target | 0.7 |
| Herbie | 3.2 |
if a < -1.0283358570150577e+35Initial program 9.9
rmApplied associate-/l*0.6
if -1.0283358570150577e+35 < a < 27501089785367.633Initial program 0.8
if 27501089785367.633 < a Initial program 9.6
rmApplied associate-/l*0.6
rmApplied div-inv0.6
Applied associate-/r*1.7
rmApplied *-un-lft-identity1.7
Applied add-sqr-sqrt1.7
Applied times-frac1.7
Applied div-inv1.8
Applied times-frac0.5
Simplified0.5
Final simplification3.2
herbie shell --seed 2019297
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
:precision binary64
:herbie-target
(if (< y -1.07612662163899753e-10) (- x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.8944268627920891e-49) (- x (/ (* y (- z t)) a)) (- x (/ y (/ a (- z t))))))
(- x (/ (* y (- z t)) a)))