\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\mathsf{fma}\left(d2 - d3, d1, d1 \cdot \left(d4 - d1\right)\right)double f(double d1, double d2, double d3, double d4) {
double r259706 = d1;
double r259707 = d2;
double r259708 = r259706 * r259707;
double r259709 = d3;
double r259710 = r259706 * r259709;
double r259711 = r259708 - r259710;
double r259712 = d4;
double r259713 = r259712 * r259706;
double r259714 = r259711 + r259713;
double r259715 = r259706 * r259706;
double r259716 = r259714 - r259715;
return r259716;
}
double f(double d1, double d2, double d3, double d4) {
double r259717 = d2;
double r259718 = d3;
double r259719 = r259717 - r259718;
double r259720 = d1;
double r259721 = d4;
double r259722 = r259721 - r259720;
double r259723 = r259720 * r259722;
double r259724 = fma(r259719, r259720, r259723);
return r259724;
}




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
Simplified0.0
Final simplification0.0
herbie shell --seed 2020060 +o rules:numerics
(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)))