\frac{x \cdot y}{\left(\left(x + y\right) \cdot \left(x + y\right)\right) \cdot \left(\left(x + y\right) + 1\right)}\frac{x}{x + y} \cdot \left(\frac{1}{\sqrt[3]{\left(x + y\right) + 1} \cdot \sqrt[3]{\left(x + y\right) + 1}} \cdot \frac{\frac{y}{\sqrt[3]{\left(x + y\right) + 1}}}{x + y}\right)double f(double x, double y) {
double r323809 = x;
double r323810 = y;
double r323811 = r323809 * r323810;
double r323812 = r323809 + r323810;
double r323813 = r323812 * r323812;
double r323814 = 1.0;
double r323815 = r323812 + r323814;
double r323816 = r323813 * r323815;
double r323817 = r323811 / r323816;
return r323817;
}
double f(double x, double y) {
double r323818 = x;
double r323819 = y;
double r323820 = r323818 + r323819;
double r323821 = r323818 / r323820;
double r323822 = 1.0;
double r323823 = 1.0;
double r323824 = r323820 + r323823;
double r323825 = cbrt(r323824);
double r323826 = r323825 * r323825;
double r323827 = r323822 / r323826;
double r323828 = r323819 / r323825;
double r323829 = r323828 / r323820;
double r323830 = r323827 * r323829;
double r323831 = r323821 * r323830;
return r323831;
}




Bits error versus x




Bits error versus y
Results
| Original | 19.4 |
|---|---|
| Target | 0.1 |
| Herbie | 0.4 |
Initial program 19.4
rmApplied times-frac8.0
rmApplied associate-/r*0.2
rmApplied div-inv0.2
Applied associate-*l*0.2
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied add-cube-cbrt0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019212 +o rules:numerics
(FPCore (x y)
:name "Numeric.SpecFunctions:incompleteBetaApprox from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(/ (/ (/ x (+ (+ y 1) x)) (+ y x)) (/ 1 (/ y (+ y x))))
(/ (* x y) (* (* (+ x y) (+ x y)) (+ (+ x y) 1))))