\frac{\frac{1.0}{x}}{y \cdot \left(1.0 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;z \le -2.4299542345100543 \cdot 10^{+156}:\\
\;\;\;\;\frac{\frac{1.0}{\left(y \cdot z\right) \cdot z}}{x} - \frac{\frac{1.0}{x}}{\left(z \cdot z\right) \cdot \left(\left(z \cdot z\right) \cdot y\right)}\\
\mathbf{elif}\;z \le 8.656403785592857 \cdot 10^{+120}:\\
\;\;\;\;\frac{\frac{\frac{1.0}{y}}{\mathsf{fma}\left(z, z, 1.0\right)}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1.0}{\left(y \cdot z\right) \cdot z}}{x} - \frac{\frac{1.0}{x}}{\left(z \cdot z\right) \cdot \left(\left(z \cdot z\right) \cdot y\right)}\\
\end{array}double f(double x, double y, double z) {
double r17048748 = 1.0;
double r17048749 = x;
double r17048750 = r17048748 / r17048749;
double r17048751 = y;
double r17048752 = z;
double r17048753 = r17048752 * r17048752;
double r17048754 = r17048748 + r17048753;
double r17048755 = r17048751 * r17048754;
double r17048756 = r17048750 / r17048755;
return r17048756;
}
double f(double x, double y, double z) {
double r17048757 = z;
double r17048758 = -2.4299542345100543e+156;
bool r17048759 = r17048757 <= r17048758;
double r17048760 = 1.0;
double r17048761 = y;
double r17048762 = r17048761 * r17048757;
double r17048763 = r17048762 * r17048757;
double r17048764 = r17048760 / r17048763;
double r17048765 = x;
double r17048766 = r17048764 / r17048765;
double r17048767 = r17048760 / r17048765;
double r17048768 = r17048757 * r17048757;
double r17048769 = r17048768 * r17048761;
double r17048770 = r17048768 * r17048769;
double r17048771 = r17048767 / r17048770;
double r17048772 = r17048766 - r17048771;
double r17048773 = 8.656403785592857e+120;
bool r17048774 = r17048757 <= r17048773;
double r17048775 = r17048760 / r17048761;
double r17048776 = fma(r17048757, r17048757, r17048760);
double r17048777 = r17048775 / r17048776;
double r17048778 = r17048777 / r17048765;
double r17048779 = r17048774 ? r17048778 : r17048772;
double r17048780 = r17048759 ? r17048772 : r17048779;
return r17048780;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.4 |
|---|---|
| Target | 5.8 |
| Herbie | 3.7 |
if z < -2.4299542345100543e+156 or 8.656403785592857e+120 < z Initial program 16.8
rmApplied div-inv16.8
Applied associate-/l*16.8
Simplified16.8
Taylor expanded around inf 16.8
Simplified7.8
if -2.4299542345100543e+156 < z < 8.656403785592857e+120Initial program 2.0
rmApplied div-inv2.1
Simplified2.1
rmApplied associate-*l/2.0
Simplified1.9
Final simplification3.7
herbie shell --seed 2019165 +o rules:numerics
(FPCore (x y z)
:name "Statistics.Distribution.CauchyLorentz:$cdensity from math-functions-0.1.5.2"
:herbie-target
(if (< (* y (+ 1.0 (* z z))) -inf.0) (/ (/ 1.0 y) (* (+ 1.0 (* z z)) x)) (if (< (* y (+ 1.0 (* z z))) 8.680743250567252e+305) (/ (/ 1.0 x) (* (+ 1.0 (* z z)) y)) (/ (/ 1.0 y) (* (+ 1.0 (* z z)) x))))
(/ (/ 1.0 x) (* y (+ 1.0 (* z z)))))