\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\frac{\frac{1}{\sqrt{\mathsf{fma}\left(z, z, 1\right)} \cdot \left(\sqrt{\mathsf{fma}\left(z, z, 1\right)} \cdot y\right)}}{x}double f(double x, double y, double z) {
double r290217 = 1.0;
double r290218 = x;
double r290219 = r290217 / r290218;
double r290220 = y;
double r290221 = z;
double r290222 = r290221 * r290221;
double r290223 = r290217 + r290222;
double r290224 = r290220 * r290223;
double r290225 = r290219 / r290224;
return r290225;
}
double f(double x, double y, double z) {
double r290226 = 1.0;
double r290227 = z;
double r290228 = fma(r290227, r290227, r290226);
double r290229 = sqrt(r290228);
double r290230 = y;
double r290231 = r290229 * r290230;
double r290232 = r290229 * r290231;
double r290233 = r290226 / r290232;
double r290234 = x;
double r290235 = r290233 / r290234;
return r290235;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.2 |
|---|---|
| Target | 5.6 |
| Herbie | 6.2 |
Initial program 6.2
rmApplied add-sqr-sqrt6.2
Applied associate-*r*6.2
Simplified6.2
rmApplied clear-num6.6
Simplified6.5
rmApplied div-inv6.5
Simplified6.2
rmApplied add-sqr-sqrt6.2
Applied associate-*l*6.2
Final simplification6.2
herbie shell --seed 2020045 +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)))))