x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;t \le -1.2820497955036201 \cdot 10^{41}:\\
\;\;\;\;x + \left(z - x\right) \cdot \frac{y}{t}\\
\mathbf{elif}\;t \le 1.02308238722779095 \cdot 10^{-8}:\\
\;\;\;\;x + \left(y \cdot \left(z - x\right)\right) \cdot \frac{1}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{z - x}{t} \cdot y\\
\end{array}double f(double x, double y, double z, double t) {
double r297423 = x;
double r297424 = y;
double r297425 = z;
double r297426 = r297425 - r297423;
double r297427 = r297424 * r297426;
double r297428 = t;
double r297429 = r297427 / r297428;
double r297430 = r297423 + r297429;
return r297430;
}
double f(double x, double y, double z, double t) {
double r297431 = t;
double r297432 = -1.28204979550362e+41;
bool r297433 = r297431 <= r297432;
double r297434 = x;
double r297435 = z;
double r297436 = r297435 - r297434;
double r297437 = y;
double r297438 = r297437 / r297431;
double r297439 = r297436 * r297438;
double r297440 = r297434 + r297439;
double r297441 = 1.023082387227791e-08;
bool r297442 = r297431 <= r297441;
double r297443 = r297437 * r297436;
double r297444 = 1.0;
double r297445 = r297444 / r297431;
double r297446 = r297443 * r297445;
double r297447 = r297434 + r297446;
double r297448 = r297436 / r297431;
double r297449 = r297448 * r297437;
double r297450 = r297434 + r297449;
double r297451 = r297442 ? r297447 : r297450;
double r297452 = r297433 ? r297440 : r297451;
return r297452;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.3 |
|---|---|
| Target | 2.0 |
| Herbie | 1.6 |
if t < -1.28204979550362e+41Initial program 10.8
rmApplied *-un-lft-identity10.8
Applied *-un-lft-identity10.8
Applied distribute-lft-out10.8
Simplified1.3
rmApplied div-inv1.3
Taylor expanded around 0 1.2
if -1.28204979550362e+41 < t < 1.023082387227791e-08Initial program 1.9
rmApplied div-inv2.0
if 1.023082387227791e-08 < t Initial program 8.3
rmApplied *-un-lft-identity8.3
Applied *-un-lft-identity8.3
Applied distribute-lft-out8.3
Simplified1.1
rmApplied associate-/r/1.4
Final simplification1.6
herbie shell --seed 2020045
(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)))