\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot d4 + \left(\left(d2 - d3\right) - d1\right) \cdot d1
double f(double d1, double d2, double d3, double d4) {
double r320937 = d1;
double r320938 = d2;
double r320939 = r320937 * r320938;
double r320940 = d3;
double r320941 = r320937 * r320940;
double r320942 = r320939 - r320941;
double r320943 = d4;
double r320944 = r320943 * r320937;
double r320945 = r320942 + r320944;
double r320946 = r320937 * r320937;
double r320947 = r320945 - r320946;
return r320947;
}
double f(double d1, double d2, double d3, double d4) {
double r320948 = d1;
double r320949 = d4;
double r320950 = r320948 * r320949;
double r320951 = d2;
double r320952 = d3;
double r320953 = r320951 - r320952;
double r320954 = r320953 - r320948;
double r320955 = r320954 * r320948;
double r320956 = r320950 + r320955;
return r320956;
}




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 add-sqr-sqrt32.5
Applied associate-*l*32.5
rmApplied associate--l+32.5
Applied distribute-lft-in32.5
Applied distribute-lft-in32.5
Simplified32.5
Simplified0.0
Final simplification0.0
herbie shell --seed 2020047
(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)))