\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\frac{\frac{1}{\left(1 + z \cdot z\right) \cdot x}}{y}double f(double x, double y, double z) {
double r404234 = 1.0;
double r404235 = x;
double r404236 = r404234 / r404235;
double r404237 = y;
double r404238 = z;
double r404239 = r404238 * r404238;
double r404240 = r404234 + r404239;
double r404241 = r404237 * r404240;
double r404242 = r404236 / r404241;
return r404242;
}
double f(double x, double y, double z) {
double r404243 = 1.0;
double r404244 = z;
double r404245 = r404244 * r404244;
double r404246 = r404243 + r404245;
double r404247 = x;
double r404248 = r404246 * r404247;
double r404249 = r404243 / r404248;
double r404250 = y;
double r404251 = r404249 / r404250;
return r404251;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.5 |
|---|---|
| Target | 5.9 |
| Herbie | 6.3 |
Initial program 6.5
rmApplied div-inv6.5
Applied times-frac6.3
rmApplied associate-*l/6.2
Simplified6.3
Final simplification6.3
herbie shell --seed 2020089
(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)))))