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 r62201 = x;
double r62202 = 1.0;
double r62203 = y;
double r62204 = r62201 * r62203;
double r62205 = r62202 - r62204;
double r62206 = r62201 * r62205;
return r62206;
}
double f(double x, double y) {
double r62207 = x;
double r62208 = 1.0;
double r62209 = y;
double r62210 = r62207 * r62209;
double r62211 = r62208 - r62210;
double r62212 = r62207 * r62211;
double r62213 = -r62209;
double r62214 = r62209 * r62207;
double r62215 = fma(r62213, r62207, r62214);
double r62216 = r62207 * r62215;
double r62217 = r62212 + r62216;
return r62217;
}



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