\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot d2 - \mathsf{fma}\left(d1, d3 - d4, d1 \cdot d1\right)double f(double d1, double d2, double d3, double d4) {
double r154671 = d1;
double r154672 = d2;
double r154673 = r154671 * r154672;
double r154674 = d3;
double r154675 = r154671 * r154674;
double r154676 = r154673 - r154675;
double r154677 = d4;
double r154678 = r154677 * r154671;
double r154679 = r154676 + r154678;
double r154680 = r154671 * r154671;
double r154681 = r154679 - r154680;
return r154681;
}
double f(double d1, double d2, double d3, double d4) {
double r154682 = d1;
double r154683 = d2;
double r154684 = r154682 * r154683;
double r154685 = d3;
double r154686 = d4;
double r154687 = r154685 - r154686;
double r154688 = r154682 * r154682;
double r154689 = fma(r154682, r154687, r154688);
double r154690 = r154684 - r154689;
return r154690;
}




Bits error versus d1




Bits error versus d2




Bits error versus d3




Bits error versus d4
| 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 2019179 +o rules:numerics
(FPCore (d1 d2 d3 d4)
:name "FastMath dist4"
:herbie-target
(* d1 (- (+ (- d2 d3) d4) d1))
(- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))