\frac{x \cdot y}{\left(\left(x + y\right) \cdot \left(x + y\right)\right) \cdot \left(\left(x + y\right) + 1\right)}\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\frac{x \cdot x + y \cdot \left(2 \cdot x + y\right)}{\sqrt[3]{x}}} \cdot \frac{y}{\left(x + y\right) + 1}double f(double x, double y) {
double r287316 = x;
double r287317 = y;
double r287318 = r287316 * r287317;
double r287319 = r287316 + r287317;
double r287320 = r287319 * r287319;
double r287321 = 1.0;
double r287322 = r287319 + r287321;
double r287323 = r287320 * r287322;
double r287324 = r287318 / r287323;
return r287324;
}
double f(double x, double y) {
double r287325 = x;
double r287326 = cbrt(r287325);
double r287327 = r287326 * r287326;
double r287328 = r287325 * r287325;
double r287329 = y;
double r287330 = 2.0;
double r287331 = r287330 * r287325;
double r287332 = r287331 + r287329;
double r287333 = r287329 * r287332;
double r287334 = r287328 + r287333;
double r287335 = r287334 / r287326;
double r287336 = r287327 / r287335;
double r287337 = r287325 + r287329;
double r287338 = 1.0;
double r287339 = r287337 + r287338;
double r287340 = r287329 / r287339;
double r287341 = r287336 * r287340;
return r287341;
}




Bits error versus x




Bits error versus y
Results
| Original | 20.0 |
|---|---|
| Target | 0.1 |
| Herbie | 9.7 |
Initial program 20.0
Taylor expanded around 0 20.0
Simplified20.0
rmApplied times-frac9.3
rmApplied add-cube-cbrt9.7
Applied associate-/l*9.7
Final simplification9.7
herbie shell --seed 2019323
(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))))