\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\mathsf{fma}\left(d2 - d3, d1, d1 \cdot d4 + \left(-d1\right) \cdot d1\right)double f(double d1, double d2, double d3, double d4) {
double r288800 = d1;
double r288801 = d2;
double r288802 = r288800 * r288801;
double r288803 = d3;
double r288804 = r288800 * r288803;
double r288805 = r288802 - r288804;
double r288806 = d4;
double r288807 = r288806 * r288800;
double r288808 = r288805 + r288807;
double r288809 = r288800 * r288800;
double r288810 = r288808 - r288809;
return r288810;
}
double f(double d1, double d2, double d3, double d4) {
double r288811 = d2;
double r288812 = d3;
double r288813 = r288811 - r288812;
double r288814 = d1;
double r288815 = d4;
double r288816 = r288814 * r288815;
double r288817 = -r288814;
double r288818 = r288817 * r288814;
double r288819 = r288816 + r288818;
double r288820 = fma(r288813, r288814, r288819);
return r288820;
}




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
rmApplied sub-neg0.0
Applied distribute-lft-in0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019344 +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)))