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 r48600 = x;
double r48601 = 1.0;
double r48602 = y;
double r48603 = r48600 * r48602;
double r48604 = r48601 - r48603;
double r48605 = r48600 * r48604;
return r48605;
}
double f(double x, double y) {
double r48606 = x;
double r48607 = 1.0;
double r48608 = y;
double r48609 = r48606 * r48608;
double r48610 = r48607 - r48609;
double r48611 = r48606 * r48610;
double r48612 = -r48608;
double r48613 = r48608 * r48606;
double r48614 = fma(r48612, r48606, r48613);
double r48615 = r48606 * r48614;
double r48616 = r48611 + r48615;
return r48616;
}



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