x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) = -\infty:\\
\;\;\;\;x + y \cdot \frac{-\left(z - t\right)}{a}\\
\mathbf{elif}\;y \cdot \left(z - t\right) \le 1.12460364113996697 \cdot 10^{196}:\\
\;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;x + \left(-\frac{y}{a}\right) \cdot \left(z - t\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r418102 = x;
double r418103 = y;
double r418104 = z;
double r418105 = t;
double r418106 = r418104 - r418105;
double r418107 = r418103 * r418106;
double r418108 = a;
double r418109 = r418107 / r418108;
double r418110 = r418102 - r418109;
return r418110;
}
double f(double x, double y, double z, double t, double a) {
double r418111 = y;
double r418112 = z;
double r418113 = t;
double r418114 = r418112 - r418113;
double r418115 = r418111 * r418114;
double r418116 = -inf.0;
bool r418117 = r418115 <= r418116;
double r418118 = x;
double r418119 = -r418114;
double r418120 = a;
double r418121 = r418119 / r418120;
double r418122 = r418111 * r418121;
double r418123 = r418118 + r418122;
double r418124 = 1.124603641139967e+196;
bool r418125 = r418115 <= r418124;
double r418126 = r418115 / r418120;
double r418127 = r418118 - r418126;
double r418128 = r418111 / r418120;
double r418129 = -r418128;
double r418130 = r418129 * r418114;
double r418131 = r418118 + r418130;
double r418132 = r418125 ? r418127 : r418131;
double r418133 = r418117 ? r418123 : r418132;
return r418133;
}




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.6 |
| Herbie | 0.3 |
if (* y (- z t)) < -inf.0Initial program 64.0
rmApplied clear-num64.0
rmApplied sub-neg64.0
Simplified0.2
rmApplied div-inv0.4
Applied distribute-rgt-neg-in0.4
Applied associate-*l*0.3
Simplified0.2
if -inf.0 < (* y (- z t)) < 1.124603641139967e+196Initial program 0.3
if 1.124603641139967e+196 < (* y (- z t)) Initial program 28.4
rmApplied clear-num28.5
rmApplied sub-neg28.5
Simplified0.6
Final simplification0.3
herbie shell --seed 2020065
(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.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)))