x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;a \le -3.6583546044435786 \cdot 10^{-85}:\\
\;\;\;\;x - \frac{y}{\frac{a}{z - t}}\\
\mathbf{elif}\;a \le 2.2026776871235658 \cdot 10^{+77}:\\
\;\;\;\;x - \left(\frac{y \cdot z}{a} - \frac{1}{\frac{a}{t \cdot y}}\right)\\
\mathbf{else}:\\
\;\;\;\;x - \frac{z - t}{\sqrt[3]{a}} \cdot \frac{y}{\sqrt[3]{a} \cdot \sqrt[3]{a}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r12629984 = x;
double r12629985 = y;
double r12629986 = z;
double r12629987 = t;
double r12629988 = r12629986 - r12629987;
double r12629989 = r12629985 * r12629988;
double r12629990 = a;
double r12629991 = r12629989 / r12629990;
double r12629992 = r12629984 - r12629991;
return r12629992;
}
double f(double x, double y, double z, double t, double a) {
double r12629993 = a;
double r12629994 = -3.6583546044435786e-85;
bool r12629995 = r12629993 <= r12629994;
double r12629996 = x;
double r12629997 = y;
double r12629998 = z;
double r12629999 = t;
double r12630000 = r12629998 - r12629999;
double r12630001 = r12629993 / r12630000;
double r12630002 = r12629997 / r12630001;
double r12630003 = r12629996 - r12630002;
double r12630004 = 2.2026776871235658e+77;
bool r12630005 = r12629993 <= r12630004;
double r12630006 = r12629997 * r12629998;
double r12630007 = r12630006 / r12629993;
double r12630008 = 1.0;
double r12630009 = r12629999 * r12629997;
double r12630010 = r12629993 / r12630009;
double r12630011 = r12630008 / r12630010;
double r12630012 = r12630007 - r12630011;
double r12630013 = r12629996 - r12630012;
double r12630014 = cbrt(r12629993);
double r12630015 = r12630000 / r12630014;
double r12630016 = r12630014 * r12630014;
double r12630017 = r12629997 / r12630016;
double r12630018 = r12630015 * r12630017;
double r12630019 = r12629996 - r12630018;
double r12630020 = r12630005 ? r12630013 : r12630019;
double r12630021 = r12629995 ? r12630003 : r12630020;
return r12630021;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 5.5 |
|---|---|
| Target | 0.7 |
| Herbie | 1.2 |
if a < -3.6583546044435786e-85Initial program 7.4
rmApplied associate-/l*0.9
if -3.6583546044435786e-85 < a < 2.2026776871235658e+77Initial program 1.5
rmApplied add-cube-cbrt2.3
Applied times-frac5.6
Taylor expanded around 0 1.5
rmApplied clear-num1.6
if 2.2026776871235658e+77 < a Initial program 9.4
rmApplied add-cube-cbrt9.6
Applied times-frac1.1
Final simplification1.2
herbie shell --seed 2019158 +o rules:numerics
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
: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)))