x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -269238844195856694002518404049970051153900:\\
\;\;\;\;\frac{z - t}{a} \cdot y + x\\
\mathbf{elif}\;y \le 3016889210368408841793848075091968:\\
\;\;\;\;\frac{\frac{1}{a}}{\frac{\frac{1}{y}}{z - t}} + x\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{z - t}{\sqrt[3]{a} \cdot \sqrt[3]{a}}}{\frac{\sqrt[3]{a}}{y}} + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r216823 = x;
double r216824 = y;
double r216825 = z;
double r216826 = t;
double r216827 = r216825 - r216826;
double r216828 = r216824 * r216827;
double r216829 = a;
double r216830 = r216828 / r216829;
double r216831 = r216823 + r216830;
return r216831;
}
double f(double x, double y, double z, double t, double a) {
double r216832 = y;
double r216833 = -2.692388441958567e+41;
bool r216834 = r216832 <= r216833;
double r216835 = z;
double r216836 = t;
double r216837 = r216835 - r216836;
double r216838 = a;
double r216839 = r216837 / r216838;
double r216840 = r216839 * r216832;
double r216841 = x;
double r216842 = r216840 + r216841;
double r216843 = 3.016889210368409e+33;
bool r216844 = r216832 <= r216843;
double r216845 = 1.0;
double r216846 = r216845 / r216838;
double r216847 = r216845 / r216832;
double r216848 = r216847 / r216837;
double r216849 = r216846 / r216848;
double r216850 = r216849 + r216841;
double r216851 = cbrt(r216838);
double r216852 = r216851 * r216851;
double r216853 = r216837 / r216852;
double r216854 = r216851 / r216832;
double r216855 = r216853 / r216854;
double r216856 = r216855 + r216841;
double r216857 = r216844 ? r216850 : r216856;
double r216858 = r216834 ? r216842 : r216857;
return r216858;
}




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.9 |
if y < -2.692388441958567e+41Initial program 17.9
Simplified4.1
rmApplied fma-udef4.1
Simplified3.3
rmApplied associate-/r/1.0
if -2.692388441958567e+41 < y < 3.016889210368409e+33Initial program 0.7
Simplified1.7
rmApplied fma-udef1.7
Simplified1.9
rmApplied clear-num1.9
rmApplied *-un-lft-identity1.9
Applied div-inv1.9
Applied times-frac0.7
Applied associate-/r*0.7
Simplified0.7
if 3.016889210368409e+33 < y Initial program 16.7
Simplified4.2
rmApplied fma-udef4.2
Simplified3.6
rmApplied *-un-lft-identity3.6
Applied add-cube-cbrt4.2
Applied times-frac4.2
Applied associate-/r*1.5
Simplified1.5
Final simplification0.9
herbie shell --seed 2019304 +o rules:numerics
(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.07612662163899753e-10) (+ x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.8944268627920891e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))
(+ x (/ (* y (- z t)) a)))