\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\frac{\frac{\sqrt{1}}{\sqrt[3]{x} \cdot \sqrt[3]{x}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{\frac{\frac{\sqrt{1}}{\sqrt[3]{x}}}{\sqrt[3]{y}}}{1 + z \cdot z}double f(double x, double y, double z) {
double r282938 = 1.0;
double r282939 = x;
double r282940 = r282938 / r282939;
double r282941 = y;
double r282942 = z;
double r282943 = r282942 * r282942;
double r282944 = r282938 + r282943;
double r282945 = r282941 * r282944;
double r282946 = r282940 / r282945;
return r282946;
}
double f(double x, double y, double z) {
double r282947 = 1.0;
double r282948 = sqrt(r282947);
double r282949 = x;
double r282950 = cbrt(r282949);
double r282951 = r282950 * r282950;
double r282952 = r282948 / r282951;
double r282953 = y;
double r282954 = cbrt(r282953);
double r282955 = r282954 * r282954;
double r282956 = r282952 / r282955;
double r282957 = r282948 / r282950;
double r282958 = r282957 / r282954;
double r282959 = z;
double r282960 = r282959 * r282959;
double r282961 = r282947 + r282960;
double r282962 = r282958 / r282961;
double r282963 = r282956 * r282962;
return r282963;
}




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-sqr-sqrt7.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)))))