\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\frac{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt[3]{x} \cdot \sqrt[3]{x}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{\frac{\frac{\sqrt[3]{1}}{\sqrt[3]{x}}}{\sqrt[3]{y}}}{1 + z \cdot z}double f(double x, double y, double z) {
double r236168 = 1.0;
double r236169 = x;
double r236170 = r236168 / r236169;
double r236171 = y;
double r236172 = z;
double r236173 = r236172 * r236172;
double r236174 = r236168 + r236173;
double r236175 = r236171 * r236174;
double r236176 = r236170 / r236175;
return r236176;
}
double f(double x, double y, double z) {
double r236177 = 1.0;
double r236178 = cbrt(r236177);
double r236179 = r236178 * r236178;
double r236180 = x;
double r236181 = cbrt(r236180);
double r236182 = r236181 * r236181;
double r236183 = r236179 / r236182;
double r236184 = y;
double r236185 = cbrt(r236184);
double r236186 = r236185 * r236185;
double r236187 = r236183 / r236186;
double r236188 = r236178 / r236181;
double r236189 = r236188 / r236185;
double r236190 = z;
double r236191 = r236190 * r236190;
double r236192 = r236177 + r236191;
double r236193 = r236189 / r236192;
double r236194 = r236187 * r236193;
return r236194;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.7 |
|---|---|
| Target | 6.1 |
| Herbie | 6.3 |
Initial program 6.7
rmApplied add-cube-cbrt7.3
Applied times-frac7.1
rmApplied associate-*r/7.4
Simplified6.8
rmApplied *-un-lft-identity6.8
Applied add-cube-cbrt7.4
Applied add-cube-cbrt7.6
Applied add-cube-cbrt7.6
Applied times-frac7.6
Applied times-frac7.6
Applied times-frac6.3
Simplified6.3
Final simplification6.3
herbie shell --seed 2019323
(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)))))