\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;z \cdot z \le 2.15783729000789293969515717777497558388 \cdot 10^{171}:\\
\;\;\;\;\frac{1}{\frac{\mathsf{fma}\left(z, y \cdot z, 1 \cdot y\right)}{1} \cdot x}\\
\mathbf{elif}\;z \cdot z \le 1.615097712573262344642135347155950762195 \cdot 10^{303}:\\
\;\;\;\;\frac{\frac{\frac{1}{x}}{y}}{\mathsf{fma}\left(z, z, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{1}{x}}{z}}{y \cdot z}\\
\end{array}double f(double x, double y, double z) {
double r234211 = 1.0;
double r234212 = x;
double r234213 = r234211 / r234212;
double r234214 = y;
double r234215 = z;
double r234216 = r234215 * r234215;
double r234217 = r234211 + r234216;
double r234218 = r234214 * r234217;
double r234219 = r234213 / r234218;
return r234219;
}
double f(double x, double y, double z) {
double r234220 = z;
double r234221 = r234220 * r234220;
double r234222 = 2.157837290007893e+171;
bool r234223 = r234221 <= r234222;
double r234224 = 1.0;
double r234225 = y;
double r234226 = r234225 * r234220;
double r234227 = 1.0;
double r234228 = r234227 * r234225;
double r234229 = fma(r234220, r234226, r234228);
double r234230 = r234229 / r234227;
double r234231 = x;
double r234232 = r234230 * r234231;
double r234233 = r234224 / r234232;
double r234234 = 1.6150977125732623e+303;
bool r234235 = r234221 <= r234234;
double r234236 = r234227 / r234231;
double r234237 = r234236 / r234225;
double r234238 = fma(r234220, r234220, r234227);
double r234239 = r234237 / r234238;
double r234240 = r234236 / r234220;
double r234241 = r234240 / r234226;
double r234242 = r234235 ? r234239 : r234241;
double r234243 = r234223 ? r234233 : r234242;
return r234243;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.6 |
|---|---|
| Target | 5.9 |
| Herbie | 1.9 |
if (* z z) < 2.157837290007893e+171Initial program 1.1
rmApplied distribute-rgt-in1.1
Simplified1.1
Simplified1.1
rmApplied add-cube-cbrt1.3
Applied associate-*l*1.3
Simplified1.3
rmApplied *-un-lft-identity1.3
Applied *-un-lft-identity1.3
Applied times-frac1.3
Applied associate-/l*1.7
Simplified1.5
if 2.157837290007893e+171 < (* z z) < 1.6150977125732623e+303Initial program 8.3
Simplified7.5
if 1.6150977125732623e+303 < (* z z) Initial program 17.7
Taylor expanded around inf 17.7
Simplified0.9
Final simplification1.9
herbie shell --seed 2019196 +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)))))