\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;\frac{1}{x} \le -146184260628.28277587890625:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(x, 1, \left(z \cdot x\right) \cdot z\right) \cdot y}\\
\mathbf{elif}\;\frac{1}{x} \le 6.546427897730510596981806648031465556414 \cdot 10^{-5}:\\
\;\;\;\;\frac{\frac{\frac{\frac{1}{x}}{y}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(x, 1, \left(z \cdot x\right) \cdot z\right) \cdot y}\\
\end{array}double f(double x, double y, double z) {
double r11846982 = 1.0;
double r11846983 = x;
double r11846984 = r11846982 / r11846983;
double r11846985 = y;
double r11846986 = z;
double r11846987 = r11846986 * r11846986;
double r11846988 = r11846982 + r11846987;
double r11846989 = r11846985 * r11846988;
double r11846990 = r11846984 / r11846989;
return r11846990;
}
double f(double x, double y, double z) {
double r11846991 = 1.0;
double r11846992 = x;
double r11846993 = r11846991 / r11846992;
double r11846994 = -146184260628.28278;
bool r11846995 = r11846993 <= r11846994;
double r11846996 = z;
double r11846997 = r11846996 * r11846992;
double r11846998 = r11846997 * r11846996;
double r11846999 = fma(r11846992, r11846991, r11846998);
double r11847000 = y;
double r11847001 = r11846999 * r11847000;
double r11847002 = r11846991 / r11847001;
double r11847003 = 6.54642789773051e-05;
bool r11847004 = r11846993 <= r11847003;
double r11847005 = r11846993 / r11847000;
double r11847006 = fma(r11846996, r11846996, r11846991);
double r11847007 = sqrt(r11847006);
double r11847008 = r11847005 / r11847007;
double r11847009 = r11847008 / r11847007;
double r11847010 = r11847004 ? r11847009 : r11847002;
double r11847011 = r11846995 ? r11847002 : r11847010;
return r11847011;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.5 |
|---|---|
| Target | 5.7 |
| Herbie | 2.3 |
if (/ 1.0 x) < -146184260628.28278 or 6.54642789773051e-05 < (/ 1.0 x) Initial program 12.5
Simplified12.9
rmApplied *-un-lft-identity12.9
Applied div-inv12.9
Applied times-frac12.9
Applied associate-/l*13.1
Simplified12.6
Taylor expanded around inf 12.4
Simplified3.2
if -146184260628.28278 < (/ 1.0 x) < 6.54642789773051e-05Initial program 1.5
Simplified1.5
rmApplied add-sqr-sqrt1.5
Applied associate-/r*1.5
Final simplification2.3
herbie shell --seed 2019174 +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)))))