\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 r333536 = 1.0;
double r333537 = x;
double r333538 = r333536 / r333537;
double r333539 = y;
double r333540 = z;
double r333541 = r333540 * r333540;
double r333542 = r333536 + r333541;
double r333543 = r333539 * r333542;
double r333544 = r333538 / r333543;
return r333544;
}
double f(double x, double y, double z) {
double r333545 = 1.0;
double r333546 = y;
double r333547 = r333545 / r333546;
double r333548 = cbrt(r333547);
double r333549 = z;
double r333550 = r333549 * r333549;
double r333551 = r333545 + r333550;
double r333552 = sqrt(r333551);
double r333553 = r333552 / r333548;
double r333554 = r333548 / r333553;
double r333555 = x;
double r333556 = r333548 / r333555;
double r333557 = r333556 / r333552;
double r333558 = r333554 * r333557;
return r333558;
}




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 +o rules:numerics
(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)))))