x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}a \cdot \left(\left(z - y\right) \cdot \frac{1}{\left(t - z\right) + 1}\right) + xdouble f(double x, double y, double z, double t, double a) {
double r593016 = x;
double r593017 = y;
double r593018 = z;
double r593019 = r593017 - r593018;
double r593020 = t;
double r593021 = r593020 - r593018;
double r593022 = 1.0;
double r593023 = r593021 + r593022;
double r593024 = a;
double r593025 = r593023 / r593024;
double r593026 = r593019 / r593025;
double r593027 = r593016 - r593026;
return r593027;
}
double f(double x, double y, double z, double t, double a) {
double r593028 = a;
double r593029 = z;
double r593030 = y;
double r593031 = r593029 - r593030;
double r593032 = 1.0;
double r593033 = t;
double r593034 = r593033 - r593029;
double r593035 = 1.0;
double r593036 = r593034 + r593035;
double r593037 = r593032 / r593036;
double r593038 = r593031 * r593037;
double r593039 = r593028 * r593038;
double r593040 = x;
double r593041 = r593039 + r593040;
return r593041;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.8 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 1.8
Simplified0.2
rmApplied fma-udef0.2
rmApplied div-inv0.2
Final simplification0.2
herbie shell --seed 2020045 +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))))