x \cdot \left(1 - x \cdot y\right)
x \cdot 1 + x \cdot \left(-x \cdot y\right)
double f(double x, double y) {
double r55794 = x;
double r55795 = 1.0;
double r55796 = y;
double r55797 = r55794 * r55796;
double r55798 = r55795 - r55797;
double r55799 = r55794 * r55798;
return r55799;
}
double f(double x, double y) {
double r55800 = x;
double r55801 = 1.0;
double r55802 = r55800 * r55801;
double r55803 = y;
double r55804 = r55800 * r55803;
double r55805 = -r55804;
double r55806 = r55800 * r55805;
double r55807 = r55802 + r55806;
return r55807;
}



Bits error versus x



Bits error versus y
Results
Initial program 0.1
rmApplied sub-neg0.1
Applied distribute-lft-in0.1
Final simplification0.1
herbie shell --seed 2020024 +o rules:numerics
(FPCore (x y)
:name "Numeric.SpecFunctions:log1p from math-functions-0.1.5.2, A"
:precision binary64
(* x (- 1 (* x y))))