x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;y \le -1.135513131207627854220763512156247298535 \cdot 10^{-100}:\\
\;\;\;\;x + \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{1} \cdot \left(\frac{\sqrt[3]{y}}{t} \cdot \left(z - x\right)\right)\\
\mathbf{elif}\;y \le 1.679711245375942250255279733473869160103 \cdot 10^{-30}:\\
\;\;\;\;x + \left(y \cdot \left(z - x\right)\right) \cdot \frac{1}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\frac{t}{z - x}}\\
\end{array}double f(double x, double y, double z, double t) {
double r338379 = x;
double r338380 = y;
double r338381 = z;
double r338382 = r338381 - r338379;
double r338383 = r338380 * r338382;
double r338384 = t;
double r338385 = r338383 / r338384;
double r338386 = r338379 + r338385;
return r338386;
}
double f(double x, double y, double z, double t) {
double r338387 = y;
double r338388 = -1.1355131312076279e-100;
bool r338389 = r338387 <= r338388;
double r338390 = x;
double r338391 = cbrt(r338387);
double r338392 = r338391 * r338391;
double r338393 = 1.0;
double r338394 = r338392 / r338393;
double r338395 = t;
double r338396 = r338391 / r338395;
double r338397 = z;
double r338398 = r338397 - r338390;
double r338399 = r338396 * r338398;
double r338400 = r338394 * r338399;
double r338401 = r338390 + r338400;
double r338402 = 1.6797112453759423e-30;
bool r338403 = r338387 <= r338402;
double r338404 = r338387 * r338398;
double r338405 = r338393 / r338395;
double r338406 = r338404 * r338405;
double r338407 = r338390 + r338406;
double r338408 = r338395 / r338398;
double r338409 = r338387 / r338408;
double r338410 = r338390 + r338409;
double r338411 = r338403 ? r338407 : r338410;
double r338412 = r338389 ? r338401 : r338411;
return r338412;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.2 |
|---|---|
| Target | 2.2 |
| Herbie | 1.7 |
if y < -1.1355131312076279e-100Initial program 10.1
rmApplied associate-/l*2.8
rmApplied associate-/r/2.8
rmApplied *-un-lft-identity2.8
Applied add-cube-cbrt3.5
Applied times-frac3.4
Applied associate-*l*2.5
if -1.1355131312076279e-100 < y < 1.6797112453759423e-30Initial program 1.3
rmApplied div-inv1.4
if 1.6797112453759423e-30 < y Initial program 12.7
rmApplied associate-/l*1.4
Final simplification1.7
herbie shell --seed 2019362
(FPCore (x y z t)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"
:precision binary64
:herbie-target
(- x (+ (* x (/ y t)) (* (- z) (/ y t))))
(+ x (/ (* y (- z x)) t)))