x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;\left(z - t\right) \cdot y \le -9.109595270522021579671391139995883067258 \cdot 10^{140} \lor \neg \left(\left(z - t\right) \cdot y \le 4.07478987407041983829874325238341798776 \cdot 10^{191}\right):\\
\;\;\;\;x + \frac{y}{\frac{a}{t - z}}\\
\mathbf{else}:\\
\;\;\;\;x - \frac{\left(z - t\right) \cdot y}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r225948 = x;
double r225949 = y;
double r225950 = z;
double r225951 = t;
double r225952 = r225950 - r225951;
double r225953 = r225949 * r225952;
double r225954 = a;
double r225955 = r225953 / r225954;
double r225956 = r225948 - r225955;
return r225956;
}
double f(double x, double y, double z, double t, double a) {
double r225957 = z;
double r225958 = t;
double r225959 = r225957 - r225958;
double r225960 = y;
double r225961 = r225959 * r225960;
double r225962 = -9.109595270522022e+140;
bool r225963 = r225961 <= r225962;
double r225964 = 4.07478987407042e+191;
bool r225965 = r225961 <= r225964;
double r225966 = !r225965;
bool r225967 = r225963 || r225966;
double r225968 = x;
double r225969 = a;
double r225970 = r225958 - r225957;
double r225971 = r225969 / r225970;
double r225972 = r225960 / r225971;
double r225973 = r225968 + r225972;
double r225974 = r225961 / r225969;
double r225975 = r225968 - r225974;
double r225976 = r225967 ? r225973 : r225975;
return r225976;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.4 |
|---|---|
| Target | 0.7 |
| Herbie | 0.7 |
if (* y (- z t)) < -9.109595270522022e+140 or 4.07478987407042e+191 < (* y (- z t)) Initial program 23.6
Simplified1.2
rmApplied fma-udef1.2
Simplified1.4
if -9.109595270522022e+140 < (* y (- z t)) < 4.07478987407042e+191Initial program 0.5
Final simplification0.7
herbie shell --seed 2019196 +o rules:numerics
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
: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)))