\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\frac{1}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}} \cdot \frac{\frac{\frac{1}{x}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}}{y}double f(double x, double y, double z) {
double r255070 = 1.0;
double r255071 = x;
double r255072 = r255070 / r255071;
double r255073 = y;
double r255074 = z;
double r255075 = r255074 * r255074;
double r255076 = r255070 + r255075;
double r255077 = r255073 * r255076;
double r255078 = r255072 / r255077;
return r255078;
}
double f(double x, double y, double z) {
double r255079 = 1.0;
double r255080 = z;
double r255081 = fma(r255080, r255080, r255079);
double r255082 = sqrt(r255081);
double r255083 = r255079 / r255082;
double r255084 = 1.0;
double r255085 = x;
double r255086 = r255084 / r255085;
double r255087 = r255086 / r255082;
double r255088 = y;
double r255089 = r255087 / r255088;
double r255090 = r255083 * r255089;
return r255090;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.3 |
|---|---|
| Target | 5.7 |
| Herbie | 5.9 |
Initial program 6.3
Simplified6.3
rmApplied *-un-lft-identity6.3
Applied add-sqr-sqrt6.3
Applied div-inv6.3
Applied times-frac6.3
Applied times-frac5.9
Simplified5.9
Final simplification5.9
herbie shell --seed 2020001 +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)))))