\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot d2 - d1 \cdot \left(d3 - \left(d4 - d1\right)\right)
double f(double d1, double d2, double d3, double d4) {
double r137870 = d1;
double r137871 = d2;
double r137872 = r137870 * r137871;
double r137873 = d3;
double r137874 = r137870 * r137873;
double r137875 = r137872 - r137874;
double r137876 = d4;
double r137877 = r137876 * r137870;
double r137878 = r137875 + r137877;
double r137879 = r137870 * r137870;
double r137880 = r137878 - r137879;
return r137880;
}
double f(double d1, double d2, double d3, double d4) {
double r137881 = d1;
double r137882 = d2;
double r137883 = r137881 * r137882;
double r137884 = d3;
double r137885 = d4;
double r137886 = r137885 - r137881;
double r137887 = r137884 - r137886;
double r137888 = r137881 * r137887;
double r137889 = r137883 - r137888;
return r137889;
}




Bits error versus d1




Bits error versus d2




Bits error versus d3




Bits error versus d4
Results
| Original | 0.0 |
|---|---|
| Target | 0.0 |
| Herbie | 0.0 |
Initial program 0.0
rmApplied associate-+l-0.0
Applied associate--l-0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019326
(FPCore (d1 d2 d3 d4)
:name "FastMath dist4"
:precision binary64
:herbie-target
(* d1 (- (+ (- d2 d3) d4) d1))
(- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))