x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;y \le -2.310708342905894128058674458977299359418 \cdot 10^{-39}:\\
\;\;\;\;x + y \cdot \frac{z - x}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\frac{y}{t}}{\frac{1}{z - x}}\\
\end{array}double f(double x, double y, double z, double t) {
double r313835 = x;
double r313836 = y;
double r313837 = z;
double r313838 = r313837 - r313835;
double r313839 = r313836 * r313838;
double r313840 = t;
double r313841 = r313839 / r313840;
double r313842 = r313835 + r313841;
return r313842;
}
double f(double x, double y, double z, double t) {
double r313843 = y;
double r313844 = -2.310708342905894e-39;
bool r313845 = r313843 <= r313844;
double r313846 = x;
double r313847 = z;
double r313848 = r313847 - r313846;
double r313849 = t;
double r313850 = r313848 / r313849;
double r313851 = r313843 * r313850;
double r313852 = r313846 + r313851;
double r313853 = r313843 / r313849;
double r313854 = 1.0;
double r313855 = r313854 / r313848;
double r313856 = r313853 / r313855;
double r313857 = r313846 + r313856;
double r313858 = r313845 ? r313852 : r313857;
return r313858;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.4 |
|---|---|
| Target | 2.0 |
| Herbie | 1.7 |
if y < -2.310708342905894e-39Initial program 13.9
rmApplied *-un-lft-identity13.9
Applied times-frac1.5
Simplified1.5
if -2.310708342905894e-39 < y Initial program 4.3
rmApplied associate-/l*7.4
rmApplied div-inv7.4
Applied associate-/r*1.7
Final simplification1.7
herbie shell --seed 2019354
(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)))