x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -3.8901331428127535 \cdot 10^{38}:\\
\;\;\;\;x + y \cdot \left(\frac{z}{a} - \frac{t}{a}\right)\\
\mathbf{elif}\;y \le 1.46766470083811 \cdot 10^{31}:\\
\;\;\;\;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 r345860 = x;
double r345861 = y;
double r345862 = z;
double r345863 = t;
double r345864 = r345862 - r345863;
double r345865 = r345861 * r345864;
double r345866 = a;
double r345867 = r345865 / r345866;
double r345868 = r345860 + r345867;
return r345868;
}
double f(double x, double y, double z, double t, double a) {
double r345869 = y;
double r345870 = -3.8901331428127535e+38;
bool r345871 = r345869 <= r345870;
double r345872 = x;
double r345873 = z;
double r345874 = a;
double r345875 = r345873 / r345874;
double r345876 = t;
double r345877 = r345876 / r345874;
double r345878 = r345875 - r345877;
double r345879 = r345869 * r345878;
double r345880 = r345872 + r345879;
double r345881 = 1.46766470083811e+31;
bool r345882 = r345869 <= r345881;
double r345883 = r345873 - r345876;
double r345884 = r345869 * r345883;
double r345885 = r345884 / r345874;
double r345886 = r345872 + r345885;
double r345887 = r345874 / r345883;
double r345888 = r345869 / r345887;
double r345889 = r345872 + r345888;
double r345890 = r345882 ? r345886 : r345889;
double r345891 = r345871 ? r345880 : r345890;
return r345891;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.2 |
|---|---|
| Target | 0.7 |
| Herbie | 0.7 |
if y < -3.8901331428127535e+38Initial program 18.0
rmApplied add-cube-cbrt18.4
Applied times-frac2.6
rmApplied add-cube-cbrt2.7
Applied times-frac2.7
Applied associate-*l*1.1
Taylor expanded around 0 18.0
Simplified0.8
if -3.8901331428127535e+38 < y < 1.46766470083811e+31Initial program 0.6
if 1.46766470083811e+31 < y Initial program 17.2
rmApplied associate-/l*1.1
Final simplification0.7
herbie shell --seed 2020020
(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)))