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 r658945 = x;
double r658946 = y;
double r658947 = z;
double r658948 = r658946 - r658947;
double r658949 = t;
double r658950 = r658949 - r658947;
double r658951 = 1.0;
double r658952 = r658950 + r658951;
double r658953 = a;
double r658954 = r658952 / r658953;
double r658955 = r658948 / r658954;
double r658956 = r658945 - r658955;
return r658956;
}
double f(double x, double y, double z, double t, double a) {
double r658957 = a;
double r658958 = z;
double r658959 = y;
double r658960 = r658958 - r658959;
double r658961 = t;
double r658962 = r658961 - r658958;
double r658963 = 1.0;
double r658964 = r658962 + r658963;
double r658965 = r658960 / r658964;
double r658966 = x;
double r658967 = fma(r658957, r658965, r658966);
return r658967;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




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