x - \frac{y - z}{\frac{\left(t - z\right) + 1.0}{a}}\mathsf{fma}\left(\frac{z - y}{\left(1.0 + t\right) - z}, a, x\right)double f(double x, double y, double z, double t, double a) {
double r26414008 = x;
double r26414009 = y;
double r26414010 = z;
double r26414011 = r26414009 - r26414010;
double r26414012 = t;
double r26414013 = r26414012 - r26414010;
double r26414014 = 1.0;
double r26414015 = r26414013 + r26414014;
double r26414016 = a;
double r26414017 = r26414015 / r26414016;
double r26414018 = r26414011 / r26414017;
double r26414019 = r26414008 - r26414018;
return r26414019;
}
double f(double x, double y, double z, double t, double a) {
double r26414020 = z;
double r26414021 = y;
double r26414022 = r26414020 - r26414021;
double r26414023 = 1.0;
double r26414024 = t;
double r26414025 = r26414023 + r26414024;
double r26414026 = r26414025 - r26414020;
double r26414027 = r26414022 / r26414026;
double r26414028 = a;
double r26414029 = x;
double r26414030 = fma(r26414027, r26414028, r26414029);
return r26414030;
}




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.2 |
| Herbie | 0.2 |
Initial program 2.0
Simplified0.2
Final simplification0.2
herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.SparkLine:renderSparkLine from Chart-1.5.3"
:herbie-target
(- x (* (/ (- y z) (+ (- t z) 1.0)) a))
(- x (/ (- y z) (/ (+ (- t z) 1.0) a))))