x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -3.52725015146069365 \cdot 10^{103}:\\
\;\;\;\;x + y \cdot \frac{z - t}{a}\\
\mathbf{elif}\;y \le 3.7290892044176289 \cdot 10^{-146}:\\
\;\;\;\;x + \frac{y \cdot z + y \cdot \left(-t\right)}{a}\\
\mathbf{elif}\;y \le 2.39946692051228959 \cdot 10^{89}:\\
\;\;\;\;x + \frac{y}{a} \cdot \left(z - t\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r286974 = x;
double r286975 = y;
double r286976 = z;
double r286977 = t;
double r286978 = r286976 - r286977;
double r286979 = r286975 * r286978;
double r286980 = a;
double r286981 = r286979 / r286980;
double r286982 = r286974 + r286981;
return r286982;
}
double f(double x, double y, double z, double t, double a) {
double r286983 = y;
double r286984 = -3.5272501514606936e+103;
bool r286985 = r286983 <= r286984;
double r286986 = x;
double r286987 = z;
double r286988 = t;
double r286989 = r286987 - r286988;
double r286990 = a;
double r286991 = r286989 / r286990;
double r286992 = r286983 * r286991;
double r286993 = r286986 + r286992;
double r286994 = 3.729089204417629e-146;
bool r286995 = r286983 <= r286994;
double r286996 = r286983 * r286987;
double r286997 = -r286988;
double r286998 = r286983 * r286997;
double r286999 = r286996 + r286998;
double r287000 = r286999 / r286990;
double r287001 = r286986 + r287000;
double r287002 = 2.3994669205122896e+89;
bool r287003 = r286983 <= r287002;
double r287004 = r286983 / r286990;
double r287005 = r287004 * r286989;
double r287006 = r286986 + r287005;
double r287007 = r286990 / r286989;
double r287008 = r286983 / r287007;
double r287009 = r286986 + r287008;
double r287010 = r287003 ? r287006 : r287009;
double r287011 = r286995 ? r287001 : r287010;
double r287012 = r286985 ? r286993 : r287011;
return r287012;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.1 |
|---|---|
| Target | 0.7 |
| Herbie | 1.3 |
if y < -3.5272501514606936e+103Initial program 21.8
rmApplied *-un-lft-identity21.8
Applied times-frac1.4
Simplified1.4
if -3.5272501514606936e+103 < y < 3.729089204417629e-146Initial program 1.3
rmApplied sub-neg1.3
Applied distribute-lft-in1.3
if 3.729089204417629e-146 < y < 2.3994669205122896e+89Initial program 2.0
rmApplied associate-/l*3.8
rmApplied associate-/r/1.5
if 2.3994669205122896e+89 < y Initial program 20.3
rmApplied associate-/l*1.3
Final simplification1.3
herbie shell --seed 2020024
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
:precision binary64
:herbie-target
(if (< y -1.0761266216389975e-10) (+ x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))
(+ x (/ (* y (- z t)) a)))