x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;a \le -4.858733342956042121945166421427989828942 \cdot 10^{-60}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\mathbf{elif}\;a \le 73718650226315457682472960:\\
\;\;\;\;x + \frac{1}{\frac{a}{y \cdot \left(z - t\right)}}\\
\mathbf{else}:\\
\;\;\;\;x + y \cdot \left(\frac{z}{a} - \frac{t}{a}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r66323209 = x;
double r66323210 = y;
double r66323211 = z;
double r66323212 = t;
double r66323213 = r66323211 - r66323212;
double r66323214 = r66323210 * r66323213;
double r66323215 = a;
double r66323216 = r66323214 / r66323215;
double r66323217 = r66323209 + r66323216;
return r66323217;
}
double f(double x, double y, double z, double t, double a) {
double r66323218 = a;
double r66323219 = -4.858733342956042e-60;
bool r66323220 = r66323218 <= r66323219;
double r66323221 = x;
double r66323222 = y;
double r66323223 = z;
double r66323224 = t;
double r66323225 = r66323223 - r66323224;
double r66323226 = r66323218 / r66323225;
double r66323227 = r66323222 / r66323226;
double r66323228 = r66323221 + r66323227;
double r66323229 = 7.371865022631546e+25;
bool r66323230 = r66323218 <= r66323229;
double r66323231 = 1.0;
double r66323232 = r66323222 * r66323225;
double r66323233 = r66323218 / r66323232;
double r66323234 = r66323231 / r66323233;
double r66323235 = r66323221 + r66323234;
double r66323236 = r66323223 / r66323218;
double r66323237 = r66323224 / r66323218;
double r66323238 = r66323236 - r66323237;
double r66323239 = r66323222 * r66323238;
double r66323240 = r66323221 + r66323239;
double r66323241 = r66323230 ? r66323235 : r66323240;
double r66323242 = r66323220 ? r66323228 : r66323241;
return r66323242;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.2 |
|---|---|
| Target | 0.7 |
| Herbie | 0.8 |
if a < -4.858733342956042e-60Initial program 8.6
rmApplied associate-/l*0.6
if -4.858733342956042e-60 < a < 7.371865022631546e+25Initial program 1.0
rmApplied clear-num1.1
if 7.371865022631546e+25 < a Initial program 9.6
rmApplied add-cube-cbrt9.9
Applied times-frac1.3
Taylor expanded around 0 9.6
Simplified0.6
Final simplification0.8
herbie shell --seed 2019173
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
:herbie-target
(if (< y -1.0761266216389975e-10) (+ x (/ 1.0 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))
(+ x (/ (* y (- z t)) a)))