x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -7.129129962210888 \cdot 10^{-45}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t - z}{a}, y, x\right)\\
\mathbf{elif}\;y \le 1.2672317070069067 \cdot 10^{-167}:\\
\;\;\;\;x + \frac{y \cdot \left(t - z\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\sqrt{y}}}, \frac{t - z}{\frac{\sqrt[3]{a}}{\sqrt{y}}}, x\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r9838295 = x;
double r9838296 = y;
double r9838297 = z;
double r9838298 = t;
double r9838299 = r9838297 - r9838298;
double r9838300 = r9838296 * r9838299;
double r9838301 = a;
double r9838302 = r9838300 / r9838301;
double r9838303 = r9838295 - r9838302;
return r9838303;
}
double f(double x, double y, double z, double t, double a) {
double r9838304 = y;
double r9838305 = -7.129129962210888e-45;
bool r9838306 = r9838304 <= r9838305;
double r9838307 = t;
double r9838308 = z;
double r9838309 = r9838307 - r9838308;
double r9838310 = a;
double r9838311 = r9838309 / r9838310;
double r9838312 = x;
double r9838313 = fma(r9838311, r9838304, r9838312);
double r9838314 = 1.2672317070069067e-167;
bool r9838315 = r9838304 <= r9838314;
double r9838316 = r9838304 * r9838309;
double r9838317 = r9838316 / r9838310;
double r9838318 = r9838312 + r9838317;
double r9838319 = 1.0;
double r9838320 = cbrt(r9838310);
double r9838321 = r9838320 * r9838320;
double r9838322 = sqrt(r9838304);
double r9838323 = r9838321 / r9838322;
double r9838324 = r9838319 / r9838323;
double r9838325 = r9838320 / r9838322;
double r9838326 = r9838309 / r9838325;
double r9838327 = fma(r9838324, r9838326, r9838312);
double r9838328 = r9838315 ? r9838318 : r9838327;
double r9838329 = r9838306 ? r9838313 : r9838328;
return r9838329;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 5.9 |
|---|---|
| Target | 0.7 |
| Herbie | 0.9 |
if y < -7.129129962210888e-45Initial program 12.0
Simplified3.2
rmApplied fma-udef3.2
rmApplied associate-*r/12.0
rmApplied associate-/l*3.0
rmApplied *-un-lft-identity3.0
Applied *-un-lft-identity3.0
Applied distribute-lft-out3.0
Simplified1.0
if -7.129129962210888e-45 < y < 1.2672317070069067e-167Initial program 0.6
Simplified1.8
rmApplied fma-udef1.8
rmApplied associate-*r/0.6
if 1.2672317070069067e-167 < y Initial program 8.0
Simplified2.8
rmApplied fma-udef2.8
rmApplied associate-*r/8.0
rmApplied associate-/l*2.7
rmApplied add-sqr-sqrt2.8
Applied add-cube-cbrt3.3
Applied times-frac3.3
Applied *-un-lft-identity3.3
Applied times-frac1.3
Applied fma-def1.3
Final simplification0.9
herbie shell --seed 2019162 +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)))