\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(\left(d4 + d2\right) - d1\right) + \left(-d3\right)\right)
double f(double d1, double d2, double d3, double d4) {
double r178689 = d1;
double r178690 = d2;
double r178691 = r178689 * r178690;
double r178692 = d3;
double r178693 = r178689 * r178692;
double r178694 = r178691 - r178693;
double r178695 = d4;
double r178696 = r178695 * r178689;
double r178697 = r178694 + r178696;
double r178698 = r178689 * r178689;
double r178699 = r178697 - r178698;
return r178699;
}
double f(double d1, double d2, double d3, double d4) {
double r178700 = d1;
double r178701 = d4;
double r178702 = d2;
double r178703 = r178701 + r178702;
double r178704 = r178703 - r178700;
double r178705 = d3;
double r178706 = -r178705;
double r178707 = r178704 + r178706;
double r178708 = r178700 * r178707;
return r178708;
}




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
Simplified0.0
rmApplied sub-neg0.0
Applied associate-+r+0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019303
(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)))