x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}\mathsf{fma}\left(a, \frac{z - y}{\left(t - z\right) + 1}, x\right)double f(double x, double y, double z, double t, double a) {
double r397234 = x;
double r397235 = y;
double r397236 = z;
double r397237 = r397235 - r397236;
double r397238 = t;
double r397239 = r397238 - r397236;
double r397240 = 1.0;
double r397241 = r397239 + r397240;
double r397242 = a;
double r397243 = r397241 / r397242;
double r397244 = r397237 / r397243;
double r397245 = r397234 - r397244;
return r397245;
}
double f(double x, double y, double z, double t, double a) {
double r397246 = a;
double r397247 = z;
double r397248 = y;
double r397249 = r397247 - r397248;
double r397250 = t;
double r397251 = r397250 - r397247;
double r397252 = 1.0;
double r397253 = r397251 + r397252;
double r397254 = r397249 / r397253;
double r397255 = x;
double r397256 = fma(r397246, r397254, r397255);
return r397256;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 2.0 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 2.0
Simplified0.3
Final simplification0.3
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.SparkLine:renderSparkLine from Chart-1.5.3"
:precision binary64
:herbie-target
(- x (* (/ (- y z) (+ (- t z) 1)) a))
(- x (/ (- y z) (/ (+ (- t z) 1) a))))