x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;x \le -2.0778965796828648 \cdot 10^{-103} \lor \neg \left(x \le 9.10716533387276044 \cdot 10^{-93}\right):\\
\;\;\;\;x + \frac{y}{t} \cdot \left(z - x\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{1} \cdot \left(\frac{\sqrt[3]{y}}{t} \cdot \left(z - x\right)\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r433000 = x;
double r433001 = y;
double r433002 = z;
double r433003 = r433002 - r433000;
double r433004 = r433001 * r433003;
double r433005 = t;
double r433006 = r433004 / r433005;
double r433007 = r433000 + r433006;
return r433007;
}
double f(double x, double y, double z, double t) {
double r433008 = x;
double r433009 = -2.0778965796828648e-103;
bool r433010 = r433008 <= r433009;
double r433011 = 9.10716533387276e-93;
bool r433012 = r433008 <= r433011;
double r433013 = !r433012;
bool r433014 = r433010 || r433013;
double r433015 = y;
double r433016 = t;
double r433017 = r433015 / r433016;
double r433018 = z;
double r433019 = r433018 - r433008;
double r433020 = r433017 * r433019;
double r433021 = r433008 + r433020;
double r433022 = cbrt(r433015);
double r433023 = r433022 * r433022;
double r433024 = 1.0;
double r433025 = r433023 / r433024;
double r433026 = r433022 / r433016;
double r433027 = r433026 * r433019;
double r433028 = r433025 * r433027;
double r433029 = r433008 + r433028;
double r433030 = r433014 ? r433021 : r433029;
return r433030;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.8 |
|---|---|
| Target | 2.1 |
| Herbie | 1.9 |
if x < -2.0778965796828648e-103 or 9.10716533387276e-93 < x Initial program 7.9
rmApplied associate-/l*6.7
rmApplied associate-/r/0.5
if -2.0778965796828648e-103 < x < 9.10716533387276e-93Initial program 5.0
rmApplied associate-/l*5.0
rmApplied associate-/r/4.8
rmApplied *-un-lft-identity4.8
Applied add-cube-cbrt5.5
Applied times-frac5.5
Applied associate-*l*4.3
Final simplification1.9
herbie shell --seed 2020060
(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)))