\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;x \le -7.5940737606410852 \cdot 10^{159} \lor \neg \left(x \le 3.3502160983592637 \cdot 10^{92}\right):\\
\;\;\;\;\frac{\frac{\frac{1}{y}}{x}}{1 + z \cdot z}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{1}{x}}{\mathsf{fma}\left(z, z, 1\right)}}{y}\\
\end{array}double f(double x, double y, double z) {
double r346191 = 1.0;
double r346192 = x;
double r346193 = r346191 / r346192;
double r346194 = y;
double r346195 = z;
double r346196 = r346195 * r346195;
double r346197 = r346191 + r346196;
double r346198 = r346194 * r346197;
double r346199 = r346193 / r346198;
return r346199;
}
double f(double x, double y, double z) {
double r346200 = x;
double r346201 = -7.594073760641085e+159;
bool r346202 = r346200 <= r346201;
double r346203 = 3.3502160983592637e+92;
bool r346204 = r346200 <= r346203;
double r346205 = !r346204;
bool r346206 = r346202 || r346205;
double r346207 = 1.0;
double r346208 = y;
double r346209 = r346207 / r346208;
double r346210 = r346209 / r346200;
double r346211 = z;
double r346212 = r346211 * r346211;
double r346213 = r346207 + r346212;
double r346214 = r346210 / r346213;
double r346215 = r346207 / r346200;
double r346216 = fma(r346211, r346211, r346207);
double r346217 = r346215 / r346216;
double r346218 = r346217 / r346208;
double r346219 = r346206 ? r346214 : r346218;
return r346219;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.4 |
|---|---|
| Target | 5.6 |
| Herbie | 5.3 |
if x < -7.594073760641085e+159 or 3.3502160983592637e+92 < x Initial program 0.4
rmApplied associate-/r*0.4
Simplified0.5
if -7.594073760641085e+159 < x < 3.3502160983592637e+92Initial program 9.1
Simplified7.5
Final simplification5.3
herbie shell --seed 2020021 +o rules:numerics
(FPCore (x y z)
:name "Statistics.Distribution.CauchyLorentz:$cdensity from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(if (< (* y (+ 1 (* z z))) #f) (/ (/ 1 y) (* (+ 1 (* z z)) x)) (if (< (* y (+ 1 (* z z))) 8.680743250567252e+305) (/ (/ 1 x) (* (+ 1 (* z z)) y)) (/ (/ 1 y) (* (+ 1 (* z z)) x))))
(/ (/ 1 x) (* y (+ 1 (* z z)))))