\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\frac{\sqrt{1}}{y} \cdot \left(\frac{\left|\sqrt[3]{1}\right|}{\sqrt{1 + z \cdot z}} \cdot \frac{\frac{\sqrt{\sqrt[3]{1}}}{x}}{\sqrt{1 + z \cdot z}}\right)double f(double x, double y, double z) {
double r386479 = 1.0;
double r386480 = x;
double r386481 = r386479 / r386480;
double r386482 = y;
double r386483 = z;
double r386484 = r386483 * r386483;
double r386485 = r386479 + r386484;
double r386486 = r386482 * r386485;
double r386487 = r386481 / r386486;
return r386487;
}
double f(double x, double y, double z) {
double r386488 = 1.0;
double r386489 = sqrt(r386488);
double r386490 = y;
double r386491 = r386489 / r386490;
double r386492 = cbrt(r386488);
double r386493 = fabs(r386492);
double r386494 = z;
double r386495 = r386494 * r386494;
double r386496 = r386488 + r386495;
double r386497 = sqrt(r386496);
double r386498 = r386493 / r386497;
double r386499 = sqrt(r386492);
double r386500 = x;
double r386501 = r386499 / r386500;
double r386502 = r386501 / r386497;
double r386503 = r386498 * r386502;
double r386504 = r386491 * r386503;
return r386504;
}




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
rmApplied add-sqr-sqrt6.0
Applied *-un-lft-identity6.0
Applied add-cube-cbrt6.0
Applied sqrt-prod6.0
Applied times-frac6.0
Applied times-frac6.0
Simplified6.0
Final simplification6.0
herbie shell --seed 2020027
(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)))))