\frac{\frac{1.0}{x}}{y \cdot \left(1.0 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;z \le -1.354892073804187 \cdot 10^{+154}:\\
\;\;\;\;\frac{\frac{1.0}{x}}{\left(z \cdot y\right) \cdot z}\\
\mathbf{elif}\;z \le 2.6747934537368154 \cdot 10^{+119}:\\
\;\;\;\;1.0 \cdot \frac{\frac{\frac{1}{x}}{z \cdot z + 1.0}}{y}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1.0}{x}}{\left(z \cdot y\right) \cdot z}\\
\end{array}double f(double x, double y, double z) {
double r15666422 = 1.0;
double r15666423 = x;
double r15666424 = r15666422 / r15666423;
double r15666425 = y;
double r15666426 = z;
double r15666427 = r15666426 * r15666426;
double r15666428 = r15666422 + r15666427;
double r15666429 = r15666425 * r15666428;
double r15666430 = r15666424 / r15666429;
return r15666430;
}
double f(double x, double y, double z) {
double r15666431 = z;
double r15666432 = -1.354892073804187e+154;
bool r15666433 = r15666431 <= r15666432;
double r15666434 = 1.0;
double r15666435 = x;
double r15666436 = r15666434 / r15666435;
double r15666437 = y;
double r15666438 = r15666431 * r15666437;
double r15666439 = r15666438 * r15666431;
double r15666440 = r15666436 / r15666439;
double r15666441 = 2.6747934537368154e+119;
bool r15666442 = r15666431 <= r15666441;
double r15666443 = 1.0;
double r15666444 = r15666443 / r15666435;
double r15666445 = r15666431 * r15666431;
double r15666446 = r15666445 + r15666434;
double r15666447 = r15666444 / r15666446;
double r15666448 = r15666447 / r15666437;
double r15666449 = r15666434 * r15666448;
double r15666450 = r15666442 ? r15666449 : r15666440;
double r15666451 = r15666433 ? r15666440 : r15666450;
return r15666451;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.4 |
|---|---|
| Target | 5.8 |
| Herbie | 3.8 |
if z < -1.354892073804187e+154 or 2.6747934537368154e+119 < z Initial program 17.4
rmApplied div-inv17.4
Applied times-frac17.4
Taylor expanded around inf 17.4
Simplified8.5
if -1.354892073804187e+154 < z < 2.6747934537368154e+119Initial program 1.7
rmApplied div-inv1.7
Applied times-frac1.9
rmApplied add-sqr-sqrt1.9
Applied associate-/r*1.9
rmApplied div-inv1.9
Applied associate-*l*1.9
Simplified1.8
Final simplification3.8
herbie shell --seed 2019164
(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)))))