\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}}}{\left|\sqrt[3]{1 + z \cdot z}\right| \cdot y} \cdot \frac{\frac{\frac{\sqrt[3]{1}}{\sqrt[3]{x}}}{\sqrt{1 + z \cdot z}}}{\sqrt{\sqrt[3]{1 + z \cdot z}}}double f(double x, double y, double z) {
double r317863 = 1.0;
double r317864 = x;
double r317865 = r317863 / r317864;
double r317866 = y;
double r317867 = z;
double r317868 = r317867 * r317867;
double r317869 = r317863 + r317868;
double r317870 = r317866 * r317869;
double r317871 = r317865 / r317870;
return r317871;
}
double f(double x, double y, double z) {
double r317872 = 1.0;
double r317873 = cbrt(r317872);
double r317874 = r317873 * r317873;
double r317875 = x;
double r317876 = cbrt(r317875);
double r317877 = r317876 * r317876;
double r317878 = r317874 / r317877;
double r317879 = z;
double r317880 = r317879 * r317879;
double r317881 = r317872 + r317880;
double r317882 = cbrt(r317881);
double r317883 = fabs(r317882);
double r317884 = y;
double r317885 = r317883 * r317884;
double r317886 = r317878 / r317885;
double r317887 = r317873 / r317876;
double r317888 = sqrt(r317881);
double r317889 = r317887 / r317888;
double r317890 = sqrt(r317882);
double r317891 = r317889 / r317890;
double r317892 = r317886 * r317891;
return r317892;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.9 |
|---|---|
| Target | 6.0 |
| Herbie | 6.4 |
Initial program 6.9
rmApplied add-sqr-sqrt6.9
Applied associate-*r*6.9
rmApplied associate-/r*6.3
rmApplied add-cube-cbrt6.4
Applied sqrt-prod6.4
Applied add-cube-cbrt6.9
Applied add-cube-cbrt6.9
Applied times-frac6.9
Applied times-frac6.7
Applied times-frac6.6
Simplified6.4
Final simplification6.4
herbie shell --seed 2020018 +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)))))