x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}x - \frac{\frac{y - z}{\left(t - z\right) + 1}}{\frac{1}{a}}double f(double x, double y, double z, double t, double a) {
double r623975 = x;
double r623976 = y;
double r623977 = z;
double r623978 = r623976 - r623977;
double r623979 = t;
double r623980 = r623979 - r623977;
double r623981 = 1.0;
double r623982 = r623980 + r623981;
double r623983 = a;
double r623984 = r623982 / r623983;
double r623985 = r623978 / r623984;
double r623986 = r623975 - r623985;
return r623986;
}
double f(double x, double y, double z, double t, double a) {
double r623987 = x;
double r623988 = y;
double r623989 = z;
double r623990 = r623988 - r623989;
double r623991 = t;
double r623992 = r623991 - r623989;
double r623993 = 1.0;
double r623994 = r623992 + r623993;
double r623995 = r623990 / r623994;
double r623996 = 1.0;
double r623997 = a;
double r623998 = r623996 / r623997;
double r623999 = r623995 / r623998;
double r624000 = r623987 - r623999;
return r624000;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 2.1 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 2.1
rmApplied div-inv2.1
Applied associate-/r*0.4
Final simplification0.4
herbie shell --seed 2020020 +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))))