\frac{\frac{1.0}{x}}{y \cdot \left(1.0 + z \cdot z\right)}\frac{\frac{\sqrt{1.0}}{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{1}{\frac{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}{\frac{\frac{\sqrt{1.0}}{x}}{\sqrt[3]{y}}}}double f(double x, double y, double z) {
double r11890679 = 1.0;
double r11890680 = x;
double r11890681 = r11890679 / r11890680;
double r11890682 = y;
double r11890683 = z;
double r11890684 = r11890683 * r11890683;
double r11890685 = r11890679 + r11890684;
double r11890686 = r11890682 * r11890685;
double r11890687 = r11890681 / r11890686;
return r11890687;
}
double f(double x, double y, double z) {
double r11890688 = 1.0;
double r11890689 = sqrt(r11890688);
double r11890690 = z;
double r11890691 = fma(r11890690, r11890690, r11890688);
double r11890692 = sqrt(r11890691);
double r11890693 = r11890689 / r11890692;
double r11890694 = y;
double r11890695 = cbrt(r11890694);
double r11890696 = r11890695 * r11890695;
double r11890697 = r11890693 / r11890696;
double r11890698 = 1.0;
double r11890699 = x;
double r11890700 = r11890689 / r11890699;
double r11890701 = r11890700 / r11890695;
double r11890702 = r11890692 / r11890701;
double r11890703 = r11890698 / r11890702;
double r11890704 = r11890697 * r11890703;
return r11890704;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.4 |
|---|---|
| Target | 5.7 |
| Herbie | 5.9 |
Initial program 6.4
Simplified6.3
rmApplied add-sqr-sqrt6.3
Applied add-cube-cbrt6.9
Applied *-un-lft-identity6.9
Applied add-sqr-sqrt6.9
Applied times-frac6.9
Applied times-frac6.9
Applied times-frac5.9
Simplified5.9
rmApplied clear-num5.9
Final simplification5.9
herbie shell --seed 2019168 +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)))))