\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;z \le -5.900492572730370817179964668919009617778 \cdot 10^{144} \lor \neg \left(z \le 1.857560841302853637939567429509783112487 \cdot 10^{140}\right):\\
\;\;\;\;\frac{\frac{1}{x}}{\left(z \cdot y\right) \cdot z}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{1}}{x}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}}{y} \cdot \frac{\sqrt{1}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}\\
\end{array}double f(double x, double y, double z) {
double r357370 = 1.0;
double r357371 = x;
double r357372 = r357370 / r357371;
double r357373 = y;
double r357374 = z;
double r357375 = r357374 * r357374;
double r357376 = r357370 + r357375;
double r357377 = r357373 * r357376;
double r357378 = r357372 / r357377;
return r357378;
}
double f(double x, double y, double z) {
double r357379 = z;
double r357380 = -5.900492572730371e+144;
bool r357381 = r357379 <= r357380;
double r357382 = 1.8575608413028536e+140;
bool r357383 = r357379 <= r357382;
double r357384 = !r357383;
bool r357385 = r357381 || r357384;
double r357386 = 1.0;
double r357387 = x;
double r357388 = r357386 / r357387;
double r357389 = y;
double r357390 = r357379 * r357389;
double r357391 = r357390 * r357379;
double r357392 = r357388 / r357391;
double r357393 = sqrt(r357386);
double r357394 = r357393 / r357387;
double r357395 = fma(r357379, r357379, r357386);
double r357396 = sqrt(r357395);
double r357397 = r357394 / r357396;
double r357398 = r357397 / r357389;
double r357399 = r357393 / r357396;
double r357400 = r357398 * r357399;
double r357401 = r357385 ? r357392 : r357400;
return r357401;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.5 |
|---|---|
| Target | 5.7 |
| Herbie | 3.4 |
if z < -5.900492572730371e+144 or 1.8575608413028536e+140 < z Initial program 17.3
Simplified17.9
Taylor expanded around inf 17.4
Simplified7.9
if -5.900492572730371e+144 < z < 1.8575608413028536e+140Initial program 1.9
Simplified1.9
rmApplied add-sqr-sqrt2.0
Applied *-un-lft-identity2.0
Applied *-un-lft-identity2.0
Applied add-sqr-sqrt2.0
Applied times-frac2.0
Applied times-frac2.0
Applied times-frac2.0
Simplified2.0
Simplified1.5
Final simplification3.4
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)))))