\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\frac{\frac{1}{y}}{\sqrt{1 + z \cdot z}} \cdot \frac{\frac{1}{x}}{\sqrt{1 + z \cdot z}}double f(double x, double y, double z) {
double r347009 = 1.0;
double r347010 = x;
double r347011 = r347009 / r347010;
double r347012 = y;
double r347013 = z;
double r347014 = r347013 * r347013;
double r347015 = r347009 + r347014;
double r347016 = r347012 * r347015;
double r347017 = r347011 / r347016;
return r347017;
}
double f(double x, double y, double z) {
double r347018 = 1.0;
double r347019 = y;
double r347020 = r347018 / r347019;
double r347021 = z;
double r347022 = r347021 * r347021;
double r347023 = r347018 + r347022;
double r347024 = sqrt(r347023);
double r347025 = r347020 / r347024;
double r347026 = 1.0;
double r347027 = x;
double r347028 = r347026 / r347027;
double r347029 = r347028 / r347024;
double r347030 = r347025 * r347029;
return r347030;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.3 |
|---|---|
| Target | 5.6 |
| Herbie | 6.0 |
Initial program 6.3
rmApplied associate-/r*6.6
Simplified6.6
rmApplied add-sqr-sqrt6.6
Applied div-inv6.7
Applied times-frac6.0
Final simplification6.0
herbie shell --seed 2020002
(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)))))