x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) \le -1.92027268901345497 \cdot 10^{235}:\\
\;\;\;\;x - \frac{y}{\frac{a}{z - t}}\\
\mathbf{elif}\;y \cdot \left(z - t\right) \le 3.07867140745968214 \cdot 10^{206}:\\
\;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;x - y \cdot \frac{z - t}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r367838 = x;
double r367839 = y;
double r367840 = z;
double r367841 = t;
double r367842 = r367840 - r367841;
double r367843 = r367839 * r367842;
double r367844 = a;
double r367845 = r367843 / r367844;
double r367846 = r367838 - r367845;
return r367846;
}
double f(double x, double y, double z, double t, double a) {
double r367847 = y;
double r367848 = z;
double r367849 = t;
double r367850 = r367848 - r367849;
double r367851 = r367847 * r367850;
double r367852 = -1.920272689013455e+235;
bool r367853 = r367851 <= r367852;
double r367854 = x;
double r367855 = a;
double r367856 = r367855 / r367850;
double r367857 = r367847 / r367856;
double r367858 = r367854 - r367857;
double r367859 = 3.078671407459682e+206;
bool r367860 = r367851 <= r367859;
double r367861 = r367851 / r367855;
double r367862 = r367854 - r367861;
double r367863 = r367850 / r367855;
double r367864 = r367847 * r367863;
double r367865 = r367854 - r367864;
double r367866 = r367860 ? r367862 : r367865;
double r367867 = r367853 ? r367858 : r367866;
return r367867;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.1 |
|---|---|
| Target | 0.7 |
| Herbie | 0.5 |
if (* y (- z t)) < -1.920272689013455e+235Initial program 34.7
rmApplied associate-/l*0.6
if -1.920272689013455e+235 < (* y (- z t)) < 3.078671407459682e+206Initial program 0.5
if 3.078671407459682e+206 < (* y (- z t)) Initial program 27.8
rmApplied *-un-lft-identity27.8
Applied times-frac0.7
Simplified0.7
Final simplification0.5
herbie shell --seed 2020089
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
: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)))