\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\frac{\sqrt[3]{\frac{1}{y}}}{\frac{\sqrt{1 + z \cdot z}}{\sqrt[3]{\frac{1}{y}}}} \cdot \frac{\frac{\sqrt[3]{\frac{1}{y}}}{x}}{\sqrt{1 + z \cdot z}}double f(double x, double y, double z) {
double r431035 = 1.0;
double r431036 = x;
double r431037 = r431035 / r431036;
double r431038 = y;
double r431039 = z;
double r431040 = r431039 * r431039;
double r431041 = r431035 + r431040;
double r431042 = r431038 * r431041;
double r431043 = r431037 / r431042;
return r431043;
}
double f(double x, double y, double z) {
double r431044 = 1.0;
double r431045 = y;
double r431046 = r431044 / r431045;
double r431047 = cbrt(r431046);
double r431048 = z;
double r431049 = r431048 * r431048;
double r431050 = r431044 + r431049;
double r431051 = sqrt(r431050);
double r431052 = r431051 / r431047;
double r431053 = r431047 / r431052;
double r431054 = x;
double r431055 = r431047 / r431054;
double r431056 = r431055 / r431051;
double r431057 = r431053 * r431056;
return r431057;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.3 |
|---|---|
| Target | 5.7 |
| Herbie | 6.1 |
Initial program 6.3
rmApplied associate-/r*6.6
Simplified6.6
rmApplied add-sqr-sqrt6.6
Applied *-un-lft-identity6.6
Applied add-cube-cbrt7.2
Applied times-frac7.2
Applied times-frac6.1
Simplified6.1
Final simplification6.1
herbie shell --seed 2019353
(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)))))