x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;t \le -1.57808943454970652 \cdot 10^{-307}:\\
\;\;\;\;x + \left(\frac{y}{\sqrt[3]{t}} \cdot \frac{\sqrt[3]{\frac{z - x}{\sqrt[3]{t}}} \cdot \sqrt[3]{\frac{z - x}{\sqrt[3]{t}}}}{{\left(\sqrt[3]{\sqrt[3]{t}}\right)}^{3}}\right) \cdot \sqrt[3]{\frac{z - x}{\sqrt[3]{t}}}\\
\mathbf{elif}\;t \le 4.22353994051715781 \cdot 10^{104}:\\
\;\;\;\;x + \frac{y \cdot z + \left(-x\right) \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z - x}{\sqrt[3]{t}}\\
\end{array}double f(double x, double y, double z, double t) {
double r1053444 = x;
double r1053445 = y;
double r1053446 = z;
double r1053447 = r1053446 - r1053444;
double r1053448 = r1053445 * r1053447;
double r1053449 = t;
double r1053450 = r1053448 / r1053449;
double r1053451 = r1053444 + r1053450;
return r1053451;
}
double f(double x, double y, double z, double t) {
double r1053452 = t;
double r1053453 = -1.5780894345497065e-307;
bool r1053454 = r1053452 <= r1053453;
double r1053455 = x;
double r1053456 = y;
double r1053457 = cbrt(r1053452);
double r1053458 = r1053456 / r1053457;
double r1053459 = z;
double r1053460 = r1053459 - r1053455;
double r1053461 = r1053460 / r1053457;
double r1053462 = cbrt(r1053461);
double r1053463 = r1053462 * r1053462;
double r1053464 = cbrt(r1053457);
double r1053465 = 3.0;
double r1053466 = pow(r1053464, r1053465);
double r1053467 = r1053463 / r1053466;
double r1053468 = r1053458 * r1053467;
double r1053469 = r1053468 * r1053462;
double r1053470 = r1053455 + r1053469;
double r1053471 = 4.223539940517158e+104;
bool r1053472 = r1053452 <= r1053471;
double r1053473 = r1053456 * r1053459;
double r1053474 = -r1053455;
double r1053475 = r1053474 * r1053456;
double r1053476 = r1053473 + r1053475;
double r1053477 = r1053476 / r1053452;
double r1053478 = r1053455 + r1053477;
double r1053479 = r1053457 * r1053457;
double r1053480 = r1053456 / r1053479;
double r1053481 = r1053480 * r1053461;
double r1053482 = r1053455 + r1053481;
double r1053483 = r1053472 ? r1053478 : r1053482;
double r1053484 = r1053454 ? r1053470 : r1053483;
return r1053484;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.7 |
|---|---|
| Target | 2.0 |
| Herbie | 2.3 |
if t < -1.5780894345497065e-307Initial program 6.8
rmApplied add-cube-cbrt7.3
Applied times-frac3.1
rmApplied add-cube-cbrt3.3
rmApplied add-cube-cbrt3.3
Applied associate-*r*3.3
Simplified2.7
if -1.5780894345497065e-307 < t < 4.223539940517158e+104Initial program 2.7
rmApplied sub-neg2.7
Applied distribute-lft-in2.7
Simplified2.7
if 4.223539940517158e+104 < t Initial program 12.3
rmApplied add-cube-cbrt12.5
Applied times-frac0.8
Final simplification2.3
herbie shell --seed 2020047
(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)))