\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\mathsf{fma}\left(\left(d2 - d3\right) - d1, d1, d1 \cdot d4\right)double f(double d1, double d2, double d3, double d4) {
double r105286 = d1;
double r105287 = d2;
double r105288 = r105286 * r105287;
double r105289 = d3;
double r105290 = r105286 * r105289;
double r105291 = r105288 - r105290;
double r105292 = d4;
double r105293 = r105292 * r105286;
double r105294 = r105291 + r105293;
double r105295 = r105286 * r105286;
double r105296 = r105294 - r105295;
return r105296;
}
double f(double d1, double d2, double d3, double d4) {
double r105297 = d2;
double r105298 = d3;
double r105299 = r105297 - r105298;
double r105300 = d1;
double r105301 = r105299 - r105300;
double r105302 = d4;
double r105303 = r105300 * r105302;
double r105304 = fma(r105301, r105300, r105303);
return r105304;
}




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 distribute-rgt-in0.0
rmApplied fma-def0.0
Final simplification0.0
herbie shell --seed 2019196 +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)))