\frac{\frac{1.0}{x}}{y \cdot \left(1.0 + z \cdot z\right)}\left(\frac{\sqrt[3]{\frac{1.0}{x}}}{\sqrt[3]{y}} \cdot \frac{\sqrt[3]{\frac{1.0}{x}}}{\sqrt[3]{y}}\right) \cdot \frac{\frac{\sqrt[3]{\frac{1.0}{x}}}{\sqrt[3]{y}}}{\mathsf{fma}\left(z, z, 1.0\right)}double f(double x, double y, double z) {
double r5580423 = 1.0;
double r5580424 = x;
double r5580425 = r5580423 / r5580424;
double r5580426 = y;
double r5580427 = z;
double r5580428 = r5580427 * r5580427;
double r5580429 = r5580423 + r5580428;
double r5580430 = r5580426 * r5580429;
double r5580431 = r5580425 / r5580430;
return r5580431;
}
double f(double x, double y, double z) {
double r5580432 = 1.0;
double r5580433 = x;
double r5580434 = r5580432 / r5580433;
double r5580435 = cbrt(r5580434);
double r5580436 = y;
double r5580437 = cbrt(r5580436);
double r5580438 = r5580435 / r5580437;
double r5580439 = r5580438 * r5580438;
double r5580440 = z;
double r5580441 = fma(r5580440, r5580440, r5580432);
double r5580442 = r5580438 / r5580441;
double r5580443 = r5580439 * r5580442;
return r5580443;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 7.0 |
|---|---|
| Target | 6.2 |
| Herbie | 6.5 |
Initial program 7.0
Simplified6.8
rmApplied *-un-lft-identity6.8
Applied add-cube-cbrt7.4
Applied add-cube-cbrt7.6
Applied times-frac7.6
Applied times-frac6.5
Simplified6.5
Final simplification6.5
herbie shell --seed 2019156 +o rules:numerics
(FPCore (x y z)
:name "Statistics.Distribution.CauchyLorentz:$cdensity from math-functions-0.1.5.2"
:herbie-target
(if (< (* y (+ 1.0 (* z z))) -inf.0) (/ (/ 1.0 y) (* (+ 1.0 (* z z)) x)) (if (< (* y (+ 1.0 (* z z))) 8.680743250567252e+305) (/ (/ 1.0 x) (* (+ 1.0 (* z z)) y)) (/ (/ 1.0 y) (* (+ 1.0 (* z z)) x))))
(/ (/ 1.0 x) (* y (+ 1.0 (* z z)))))