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 r674327 = x;
double r674328 = y;
double r674329 = z;
double r674330 = r674328 - r674329;
double r674331 = t;
double r674332 = r674331 - r674329;
double r674333 = 1.0;
double r674334 = r674332 + r674333;
double r674335 = a;
double r674336 = r674334 / r674335;
double r674337 = r674330 / r674336;
double r674338 = r674327 - r674337;
return r674338;
}
double f(double x, double y, double z, double t, double a) {
double r674339 = a;
double r674340 = z;
double r674341 = y;
double r674342 = r674340 - r674341;
double r674343 = t;
double r674344 = r674343 - r674340;
double r674345 = 1.0;
double r674346 = r674344 + r674345;
double r674347 = r674342 / r674346;
double r674348 = x;
double r674349 = fma(r674339, r674347, r674348);
return r674349;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 1.9 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 1.9
Simplified0.2
Final simplification0.2
herbie shell --seed 2020043 +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))))