x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) \le -3.2688106303761396 \cdot 10^{233}:\\
\;\;\;\;x + \frac{\frac{y}{a}}{\frac{1}{z - t}}\\
\mathbf{elif}\;y \cdot \left(z - t\right) \le 2.8461840642724514 \cdot 10^{164}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{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 r1639 = x;
double r1640 = y;
double r1641 = z;
double r1642 = t;
double r1643 = r1641 - r1642;
double r1644 = r1640 * r1643;
double r1645 = a;
double r1646 = r1644 / r1645;
double r1647 = r1639 + r1646;
return r1647;
}
double f(double x, double y, double z, double t, double a) {
double r1648 = y;
double r1649 = z;
double r1650 = t;
double r1651 = r1649 - r1650;
double r1652 = r1648 * r1651;
double r1653 = -3.2688106303761396e+233;
bool r1654 = r1652 <= r1653;
double r1655 = x;
double r1656 = a;
double r1657 = r1648 / r1656;
double r1658 = 1.0;
double r1659 = r1658 / r1651;
double r1660 = r1657 / r1659;
double r1661 = r1655 + r1660;
double r1662 = 2.8461840642724514e+164;
bool r1663 = r1652 <= r1662;
double r1664 = r1652 / r1656;
double r1665 = r1655 + r1664;
double r1666 = r1656 / r1651;
double r1667 = r1648 / r1666;
double r1668 = r1655 + r1667;
double r1669 = r1663 ? r1665 : r1668;
double r1670 = r1654 ? r1661 : r1669;
return r1670;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.0 |
|---|---|
| Target | 0.7 |
| Herbie | 0.5 |
if (* y (- z t)) < -3.2688106303761396e+233Initial program 34.4
rmApplied associate-/l*0.5
rmApplied div-inv0.5
Applied associate-/r*0.3
if -3.2688106303761396e+233 < (* y (- z t)) < 2.8461840642724514e+164Initial program 0.4
if 2.8461840642724514e+164 < (* y (- z t)) Initial program 23.2
rmApplied associate-/l*1.3
Final simplification0.5
herbie shell --seed 2020025
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
: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)))