\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\frac{\sqrt{1}}{y} \cdot \frac{\frac{\sqrt{1}}{x}}{1 + z \cdot z}double f(double x, double y, double z) {
double r336000 = 1.0;
double r336001 = x;
double r336002 = r336000 / r336001;
double r336003 = y;
double r336004 = z;
double r336005 = r336004 * r336004;
double r336006 = r336000 + r336005;
double r336007 = r336003 * r336006;
double r336008 = r336002 / r336007;
return r336008;
}
double f(double x, double y, double z) {
double r336009 = 1.0;
double r336010 = sqrt(r336009);
double r336011 = y;
double r336012 = r336010 / r336011;
double r336013 = x;
double r336014 = r336010 / r336013;
double r336015 = z;
double r336016 = r336015 * r336015;
double r336017 = r336009 + r336016;
double r336018 = r336014 / r336017;
double r336019 = r336012 * r336018;
return r336019;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.2 |
|---|---|
| Target | 5.5 |
| Herbie | 6.0 |
Initial program 6.2
rmApplied *-un-lft-identity6.2
Applied add-sqr-sqrt6.2
Applied times-frac6.2
Applied times-frac6.0
Simplified6.0
Final simplification6.0
herbie shell --seed 2019325
(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)))))