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 r48747 = x;
double r48748 = 1.0;
double r48749 = y;
double r48750 = r48747 * r48749;
double r48751 = r48748 - r48750;
double r48752 = r48747 * r48751;
return r48752;
}
double f(double x, double y) {
double r48753 = x;
double r48754 = 1.0;
double r48755 = y;
double r48756 = r48753 * r48755;
double r48757 = r48754 - r48756;
double r48758 = r48753 * r48757;
double r48759 = -r48755;
double r48760 = r48755 * r48753;
double r48761 = fma(r48759, r48753, r48760);
double r48762 = r48753 * r48761;
double r48763 = r48758 + r48762;
return r48763;
}



Bits error versus x



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