\frac{x \cdot \left(y - z\right)}{y}\begin{array}{l}
\mathbf{if}\;z \le -8.641964883760676028697634483308586359187 \cdot 10^{195}:\\
\;\;\;\;x - \frac{x}{\frac{y}{z}}\\
\mathbf{elif}\;z \le -2.135421934910598903580057538097509586825 \cdot 10^{97}:\\
\;\;\;\;x - \frac{\frac{x}{y}}{\frac{1}{z}}\\
\mathbf{elif}\;z \le 3.023089069211749401356410852189364064413 \cdot 10^{56}:\\
\;\;\;\;x - \frac{x}{\frac{y}{z}}\\
\mathbf{elif}\;z \le 1.146116329563046779001996723315272963304 \cdot 10^{178}:\\
\;\;\;\;x - \frac{\frac{x}{y}}{\frac{1}{z}}\\
\mathbf{else}:\\
\;\;\;\;x - \frac{x \cdot z}{y}\\
\end{array}double f(double x, double y, double z) {
double r505660 = x;
double r505661 = y;
double r505662 = z;
double r505663 = r505661 - r505662;
double r505664 = r505660 * r505663;
double r505665 = r505664 / r505661;
return r505665;
}
double f(double x, double y, double z) {
double r505666 = z;
double r505667 = -8.641964883760676e+195;
bool r505668 = r505666 <= r505667;
double r505669 = x;
double r505670 = y;
double r505671 = r505670 / r505666;
double r505672 = r505669 / r505671;
double r505673 = r505669 - r505672;
double r505674 = -2.135421934910599e+97;
bool r505675 = r505666 <= r505674;
double r505676 = r505669 / r505670;
double r505677 = 1.0;
double r505678 = r505677 / r505666;
double r505679 = r505676 / r505678;
double r505680 = r505669 - r505679;
double r505681 = 3.0230890692117494e+56;
bool r505682 = r505666 <= r505681;
double r505683 = 1.1461163295630468e+178;
bool r505684 = r505666 <= r505683;
double r505685 = r505669 * r505666;
double r505686 = r505685 / r505670;
double r505687 = r505669 - r505686;
double r505688 = r505684 ? r505680 : r505687;
double r505689 = r505682 ? r505673 : r505688;
double r505690 = r505675 ? r505680 : r505689;
double r505691 = r505668 ? r505673 : r505690;
return r505691;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.3 |
|---|---|
| Target | 3.4 |
| Herbie | 2.3 |
if z < -8.641964883760676e+195 or -2.135421934910599e+97 < z < 3.0230890692117494e+56Initial program 12.5
Taylor expanded around 0 3.5
rmApplied associate-/l*1.4
if -8.641964883760676e+195 < z < -2.135421934910599e+97 or 3.0230890692117494e+56 < z < 1.1461163295630468e+178Initial program 11.1
Taylor expanded around 0 7.4
rmApplied associate-/l*7.3
rmApplied div-inv7.4
Applied associate-/r*1.9
if 1.1461163295630468e+178 < z Initial program 13.3
Taylor expanded around 0 12.7
Final simplification2.3
herbie shell --seed 2019208
(FPCore (x y z)
:name "Diagrams.Backend.Cairo.Internal:setTexture from diagrams-cairo-1.3.0.3"
:precision binary64
:herbie-target
(if (< z -2.060202331921739e104) (- x (/ (* z x) y)) (if (< z 1.69397660138285259e213) (/ x (/ y (- y z))) (* (- y z) (/ x y))))
(/ (* x (- y z)) y))