x \cdot \left(1 - x \cdot y\right)
x \cdot \left(1 - x \cdot y\right) + x \cdot \mathsf{fma}\left(-y, x, y \cdot x\right)double f(double x, double y) {
double r47939 = x;
double r47940 = 1.0;
double r47941 = y;
double r47942 = r47939 * r47941;
double r47943 = r47940 - r47942;
double r47944 = r47939 * r47943;
return r47944;
}
double f(double x, double y) {
double r47945 = x;
double r47946 = 1.0;
double r47947 = y;
double r47948 = r47945 * r47947;
double r47949 = r47946 - r47948;
double r47950 = r47945 * r47949;
double r47951 = -r47947;
double r47952 = r47947 * r47945;
double r47953 = fma(r47951, r47945, r47952);
double r47954 = r47945 * r47953;
double r47955 = r47950 + r47954;
return r47955;
}



Bits error versus x



Bits error versus y
Initial program 0.1
rmApplied add-cube-cbrt0.1
Applied prod-diff0.1
Applied distribute-lft-in0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020033 +o rules:numerics
(FPCore (x y)
:name "Numeric.SpecFunctions:log1p from math-functions-0.1.5.2, A"
:precision binary64
(* x (- 1 (* x y))))