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 r77991 = x;
double r77992 = 1.0;
double r77993 = y;
double r77994 = r77991 * r77993;
double r77995 = r77992 - r77994;
double r77996 = r77991 * r77995;
return r77996;
}
double f(double x, double y) {
double r77997 = x;
double r77998 = 1.0;
double r77999 = y;
double r78000 = r77997 * r77999;
double r78001 = r77998 - r78000;
double r78002 = r77997 * r78001;
double r78003 = -r77999;
double r78004 = r77999 * r77997;
double r78005 = fma(r78003, r77997, r78004);
double r78006 = r77997 * r78005;
double r78007 = r78002 + r78006;
return r78007;
}



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 2020021 +o rules:numerics
(FPCore (x y)
:name "Numeric.SpecFunctions:log1p from math-functions-0.1.5.2, A"
:precision binary64
(* x (- 1 (* x y))))