x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}a \cdot \frac{z - y}{\left(t - z\right) + 1} + xdouble f(double x, double y, double z, double t, double a) {
double r606779 = x;
double r606780 = y;
double r606781 = z;
double r606782 = r606780 - r606781;
double r606783 = t;
double r606784 = r606783 - r606781;
double r606785 = 1.0;
double r606786 = r606784 + r606785;
double r606787 = a;
double r606788 = r606786 / r606787;
double r606789 = r606782 / r606788;
double r606790 = r606779 - r606789;
return r606790;
}
double f(double x, double y, double z, double t, double a) {
double r606791 = a;
double r606792 = z;
double r606793 = y;
double r606794 = r606792 - r606793;
double r606795 = t;
double r606796 = r606795 - r606792;
double r606797 = 1.0;
double r606798 = r606796 + r606797;
double r606799 = r606794 / r606798;
double r606800 = r606791 * r606799;
double r606801 = x;
double r606802 = r606800 + r606801;
return r606802;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 2.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 2.0
Simplified1.8
rmApplied fma-udef1.8
rmApplied div-inv1.8
Applied associate-*l*0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020001 +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))))