\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\frac{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{1}}{\frac{\left(\left(y \cdot z\right) \cdot z + y \cdot 1\right) \cdot x}{\sqrt[3]{1}}}double f(double x, double y, double z) {
double r303961 = 1.0;
double r303962 = x;
double r303963 = r303961 / r303962;
double r303964 = y;
double r303965 = z;
double r303966 = r303965 * r303965;
double r303967 = r303961 + r303966;
double r303968 = r303964 * r303967;
double r303969 = r303963 / r303968;
return r303969;
}
double f(double x, double y, double z) {
double r303970 = 1.0;
double r303971 = cbrt(r303970);
double r303972 = r303971 * r303971;
double r303973 = 1.0;
double r303974 = r303972 / r303973;
double r303975 = y;
double r303976 = z;
double r303977 = r303975 * r303976;
double r303978 = r303977 * r303976;
double r303979 = r303975 * r303970;
double r303980 = r303978 + r303979;
double r303981 = x;
double r303982 = r303980 * r303981;
double r303983 = r303982 / r303971;
double r303984 = r303974 / r303983;
return r303984;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.3 |
|---|---|
| Target | 5.8 |
| Herbie | 3.7 |
Initial program 6.3
rmApplied *-un-lft-identity6.3
Applied add-cube-cbrt6.3
Applied times-frac6.3
Applied associate-/l*6.6
Simplified6.5
rmApplied fma-udef6.5
Applied distribute-lft-in6.5
rmApplied associate-*r*3.7
Final simplification3.7
herbie shell --seed 2020065 +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)))))