x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -2.0994806737492123 \cdot 10^{-51}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\mathbf{elif}\;y \le 1.156346486413499 \cdot 10^{-34}:\\
\;\;\;\;x + \frac{y \cdot \left(-t\right) + z \cdot y}{a}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r6406169 = x;
double r6406170 = y;
double r6406171 = z;
double r6406172 = t;
double r6406173 = r6406171 - r6406172;
double r6406174 = r6406170 * r6406173;
double r6406175 = a;
double r6406176 = r6406174 / r6406175;
double r6406177 = r6406169 + r6406176;
return r6406177;
}
double f(double x, double y, double z, double t, double a) {
double r6406178 = y;
double r6406179 = -2.0994806737492123e-51;
bool r6406180 = r6406178 <= r6406179;
double r6406181 = x;
double r6406182 = a;
double r6406183 = z;
double r6406184 = t;
double r6406185 = r6406183 - r6406184;
double r6406186 = r6406182 / r6406185;
double r6406187 = r6406178 / r6406186;
double r6406188 = r6406181 + r6406187;
double r6406189 = 1.156346486413499e-34;
bool r6406190 = r6406178 <= r6406189;
double r6406191 = -r6406184;
double r6406192 = r6406178 * r6406191;
double r6406193 = r6406183 * r6406178;
double r6406194 = r6406192 + r6406193;
double r6406195 = r6406194 / r6406182;
double r6406196 = r6406181 + r6406195;
double r6406197 = r6406190 ? r6406196 : r6406188;
double r6406198 = r6406180 ? r6406188 : r6406197;
return r6406198;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 5.6 |
|---|---|
| Target | 0.6 |
| Herbie | 0.7 |
if y < -2.0994806737492123e-51 or 1.156346486413499e-34 < y Initial program 11.7
rmApplied associate-/l*1.0
if -2.0994806737492123e-51 < y < 1.156346486413499e-34Initial program 0.4
rmApplied sub-neg0.4
Applied distribute-lft-in0.4
Final simplification0.7
herbie shell --seed 2019156
(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 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))
(+ x (/ (* y (- z t)) a)))