\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 r324933 = x;
double r324934 = y;
double r324935 = r324933 * r324934;
double r324936 = r324933 + r324934;
double r324937 = r324936 * r324936;
double r324938 = 1.0;
double r324939 = r324936 + r324938;
double r324940 = r324937 * r324939;
double r324941 = r324935 / r324940;
return r324941;
}
double f(double x, double y) {
double r324942 = x;
double r324943 = cbrt(r324942);
double r324944 = r324943 * r324943;
double r324945 = r324942 * r324942;
double r324946 = y;
double r324947 = 2.0;
double r324948 = r324947 * r324942;
double r324949 = r324948 + r324946;
double r324950 = r324946 * r324949;
double r324951 = r324945 + r324950;
double r324952 = r324951 / r324943;
double r324953 = r324944 / r324952;
double r324954 = r324942 + r324946;
double r324955 = 1.0;
double r324956 = r324954 + r324955;
double r324957 = r324946 / r324956;
double r324958 = r324953 * r324957;
return r324958;
}




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))))