\frac{x \cdot y}{\left(\left(x + y\right) \cdot \left(x + y\right)\right) \cdot \left(\left(x + y\right) + 1\right)}\frac{\frac{x}{y + x}}{y + x} \cdot \frac{1}{\frac{1 + \left(y + x\right)}{y}}double f(double x, double y) {
double r303690 = x;
double r303691 = y;
double r303692 = r303690 * r303691;
double r303693 = r303690 + r303691;
double r303694 = r303693 * r303693;
double r303695 = 1.0;
double r303696 = r303693 + r303695;
double r303697 = r303694 * r303696;
double r303698 = r303692 / r303697;
return r303698;
}
double f(double x, double y) {
double r303699 = x;
double r303700 = y;
double r303701 = r303700 + r303699;
double r303702 = r303699 / r303701;
double r303703 = r303702 / r303701;
double r303704 = 1.0;
double r303705 = 1.0;
double r303706 = r303705 + r303701;
double r303707 = r303706 / r303700;
double r303708 = r303704 / r303707;
double r303709 = r303703 * r303708;
return r303709;
}




Bits error versus x




Bits error versus y
Results
| Original | 19.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.2 |
Initial program 19.8
rmApplied times-frac7.8
Simplified7.8
Simplified7.8
rmApplied associate-/r*0.2
Simplified0.2
rmApplied clear-num0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019196
(FPCore (x y)
:name "Numeric.SpecFunctions:incompleteBetaApprox from math-functions-0.1.5.2, A"
:herbie-target
(/ (/ (/ x (+ (+ y 1.0) x)) (+ y x)) (/ 1.0 (/ y (+ y x))))
(/ (* x y) (* (* (+ x y) (+ x y)) (+ (+ x y) 1.0))))