x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}x + a \cdot \frac{z - y}{\left(t + 1\right) - z}double f(double x, double y, double z, double t, double a) {
double r503770 = x;
double r503771 = y;
double r503772 = z;
double r503773 = r503771 - r503772;
double r503774 = t;
double r503775 = r503774 - r503772;
double r503776 = 1.0;
double r503777 = r503775 + r503776;
double r503778 = a;
double r503779 = r503777 / r503778;
double r503780 = r503773 / r503779;
double r503781 = r503770 - r503780;
return r503781;
}
double f(double x, double y, double z, double t, double a) {
double r503782 = x;
double r503783 = a;
double r503784 = z;
double r503785 = y;
double r503786 = r503784 - r503785;
double r503787 = t;
double r503788 = 1.0;
double r503789 = r503787 + r503788;
double r503790 = r503789 - r503784;
double r503791 = r503786 / r503790;
double r503792 = r503783 * r503791;
double r503793 = r503782 + r503792;
return r503793;
}




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.3 |
| Herbie | 0.3 |
Initial program 2.0
Simplified0.3
rmApplied clear-num0.4
rmApplied fma-udef0.4
Simplified1.9
rmApplied div-inv1.9
Applied associate-*l*0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019196 +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))))