\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;y \le -1.152553010188792 \cdot 10^{-160}:\\
\;\;\;\;\frac{\frac{1}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}}{y \cdot \left(\sqrt{\mathsf{fma}\left(z, z, 1\right)} \cdot x\right)}\\
\mathbf{elif}\;y \le 4.337130840969958 \cdot 10^{-21}:\\
\;\;\;\;\frac{1}{x} \cdot \frac{\frac{1}{\mathsf{fma}\left(z, z, 1\right)}}{y}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\mathsf{fma}\left(z, z, 1\right) \cdot x}}{y}\\
\end{array}double code(double x, double y, double z) {
return ((1.0 / x) / (y * (1.0 + (z * z))));
}
double code(double x, double y, double z) {
double VAR;
if ((y <= -1.152553010188792e-160)) {
VAR = ((1.0 / sqrt(fma(z, z, 1.0))) / (y * (sqrt(fma(z, z, 1.0)) * x)));
} else {
double VAR_1;
if ((y <= 4.337130840969958e-21)) {
VAR_1 = ((1.0 / x) * ((1.0 / fma(z, z, 1.0)) / y));
} else {
VAR_1 = ((1.0 / (fma(z, z, 1.0) * x)) / y);
}
VAR = VAR_1;
}
return VAR;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.4 |
|---|---|
| Target | 5.7 |
| Herbie | 5.1 |
if y < -1.152553010188792e-160Initial program 4.5
Simplified3.1
rmApplied add-sqr-sqrt3.1
Applied div-inv3.1
Applied times-frac3.1
Applied associate-/l*3.0
Simplified3.0
if -1.152553010188792e-160 < y < 4.337130840969958e-21Initial program 10.7
Simplified14.0
rmApplied *-un-lft-identity14.0
Applied div-inv14.0
Applied times-frac10.8
Simplified10.8
if 4.337130840969958e-21 < y Initial program 4.5
Simplified1.8
rmApplied div-inv1.8
Applied associate-/l*1.9
Simplified1.8
Final simplification5.1
herbie shell --seed 2020100 +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)))))