\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;z \le -4.351344512564880231704075632209688537162 \cdot 10^{97}:\\
\;\;\;\;\frac{1}{\left(z \cdot y\right) \cdot \left(x \cdot z\right)}\\
\mathbf{elif}\;z \le 1.424575886381938860449509537437903797365 \cdot 10^{84}:\\
\;\;\;\;\frac{\frac{\frac{1}{x}}{y}}{\mathsf{fma}\left(z, z, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\left(z \cdot y\right) \cdot \left(x \cdot z\right)}\\
\end{array}double f(double x, double y, double z) {
double r13521512 = 1.0;
double r13521513 = x;
double r13521514 = r13521512 / r13521513;
double r13521515 = y;
double r13521516 = z;
double r13521517 = r13521516 * r13521516;
double r13521518 = r13521512 + r13521517;
double r13521519 = r13521515 * r13521518;
double r13521520 = r13521514 / r13521519;
return r13521520;
}
double f(double x, double y, double z) {
double r13521521 = z;
double r13521522 = -4.35134451256488e+97;
bool r13521523 = r13521521 <= r13521522;
double r13521524 = 1.0;
double r13521525 = y;
double r13521526 = r13521521 * r13521525;
double r13521527 = x;
double r13521528 = r13521527 * r13521521;
double r13521529 = r13521526 * r13521528;
double r13521530 = r13521524 / r13521529;
double r13521531 = 1.4245758863819389e+84;
bool r13521532 = r13521521 <= r13521531;
double r13521533 = r13521524 / r13521527;
double r13521534 = r13521533 / r13521525;
double r13521535 = fma(r13521521, r13521521, r13521524);
double r13521536 = r13521534 / r13521535;
double r13521537 = r13521532 ? r13521536 : r13521530;
double r13521538 = r13521523 ? r13521530 : r13521537;
return r13521538;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.4 |
|---|---|
| Target | 5.7 |
| Herbie | 1.7 |
if z < -4.35134451256488e+97 or 1.4245758863819389e+84 < z Initial program 14.9
Simplified15.1
rmApplied *-un-lft-identity15.1
Applied div-inv15.1
Applied times-frac14.8
Simplified14.8
Taylor expanded around inf 15.0
Simplified2.8
if -4.35134451256488e+97 < z < 1.4245758863819389e+84Initial program 1.2
Simplified1.1
Final simplification1.7
herbie shell --seed 2019168 +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)))))