\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;z \le 7.386968723849264976414036800702327019396 \cdot 10^{84}:\\
\;\;\;\;\frac{\frac{1}{\sqrt[3]{y} \cdot \sqrt[3]{y}}}{\frac{\mathsf{fma}\left(z, z, 1\right)}{\frac{\frac{1}{x}}{\sqrt[3]{y}}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{x}}{z \cdot \left(y \cdot z\right)}\\
\end{array}double f(double x, double y, double z) {
double r10739212 = 1.0;
double r10739213 = x;
double r10739214 = r10739212 / r10739213;
double r10739215 = y;
double r10739216 = z;
double r10739217 = r10739216 * r10739216;
double r10739218 = r10739212 + r10739217;
double r10739219 = r10739215 * r10739218;
double r10739220 = r10739214 / r10739219;
return r10739220;
}
double f(double x, double y, double z) {
double r10739221 = z;
double r10739222 = 7.386968723849265e+84;
bool r10739223 = r10739221 <= r10739222;
double r10739224 = 1.0;
double r10739225 = y;
double r10739226 = cbrt(r10739225);
double r10739227 = r10739226 * r10739226;
double r10739228 = r10739224 / r10739227;
double r10739229 = fma(r10739221, r10739221, r10739224);
double r10739230 = 1.0;
double r10739231 = x;
double r10739232 = r10739230 / r10739231;
double r10739233 = r10739232 / r10739226;
double r10739234 = r10739229 / r10739233;
double r10739235 = r10739228 / r10739234;
double r10739236 = r10739224 / r10739231;
double r10739237 = r10739225 * r10739221;
double r10739238 = r10739221 * r10739237;
double r10739239 = r10739236 / r10739238;
double r10739240 = r10739223 ? r10739235 : r10739239;
return r10739240;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.5 |
|---|---|
| Target | 5.7 |
| Herbie | 5.3 |
if z < 7.386968723849265e+84Initial program 4.2
Simplified4.4
rmApplied add-cube-cbrt5.1
Applied div-inv5.1
Applied times-frac5.1
Applied associate-/l*4.5
if 7.386968723849265e+84 < z Initial program 15.4
Simplified15.7
Taylor expanded around inf 15.5
Simplified8.4
Final simplification5.3
herbie shell --seed 2019171 +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)))))