x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -3.0031963596853533 \cdot 10^{-187}:\\
\;\;\;\;x + \frac{z - t}{\frac{a}{y}}\\
\mathbf{elif}\;y \le 5.296167574529121 \cdot 10^{+71}:\\
\;\;\;\;\frac{1}{\frac{a}{y \cdot \left(z - t\right)}} + x\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r15195476 = x;
double r15195477 = y;
double r15195478 = z;
double r15195479 = t;
double r15195480 = r15195478 - r15195479;
double r15195481 = r15195477 * r15195480;
double r15195482 = a;
double r15195483 = r15195481 / r15195482;
double r15195484 = r15195476 + r15195483;
return r15195484;
}
double f(double x, double y, double z, double t, double a) {
double r15195485 = y;
double r15195486 = -3.0031963596853533e-187;
bool r15195487 = r15195485 <= r15195486;
double r15195488 = x;
double r15195489 = z;
double r15195490 = t;
double r15195491 = r15195489 - r15195490;
double r15195492 = a;
double r15195493 = r15195492 / r15195485;
double r15195494 = r15195491 / r15195493;
double r15195495 = r15195488 + r15195494;
double r15195496 = 5.296167574529121e+71;
bool r15195497 = r15195485 <= r15195496;
double r15195498 = 1.0;
double r15195499 = r15195485 * r15195491;
double r15195500 = r15195492 / r15195499;
double r15195501 = r15195498 / r15195500;
double r15195502 = r15195501 + r15195488;
double r15195503 = r15195492 / r15195491;
double r15195504 = r15195485 / r15195503;
double r15195505 = r15195488 + r15195504;
double r15195506 = r15195497 ? r15195502 : r15195505;
double r15195507 = r15195487 ? r15195495 : r15195506;
return r15195507;
}




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.7 |
| Herbie | 1.7 |
if y < -3.0031963596853533e-187Initial program 7.5
Taylor expanded around 0 7.5
Simplified2.7
if -3.0031963596853533e-187 < y < 5.296167574529121e+71Initial program 1.0
rmApplied clear-num1.1
if 5.296167574529121e+71 < y Initial program 17.6
rmApplied associate-/l*1.2
Final simplification1.7
herbie shell --seed 2019164
(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)))