x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}x + \frac{a}{\frac{t + \left(1 - z\right)}{z - y}}double f(double x, double y, double z, double t, double a) {
double r24136674 = x;
double r24136675 = y;
double r24136676 = z;
double r24136677 = r24136675 - r24136676;
double r24136678 = t;
double r24136679 = r24136678 - r24136676;
double r24136680 = 1.0;
double r24136681 = r24136679 + r24136680;
double r24136682 = a;
double r24136683 = r24136681 / r24136682;
double r24136684 = r24136677 / r24136683;
double r24136685 = r24136674 - r24136684;
return r24136685;
}
double f(double x, double y, double z, double t, double a) {
double r24136686 = x;
double r24136687 = a;
double r24136688 = t;
double r24136689 = 1.0;
double r24136690 = z;
double r24136691 = r24136689 - r24136690;
double r24136692 = r24136688 + r24136691;
double r24136693 = y;
double r24136694 = r24136690 - r24136693;
double r24136695 = r24136692 / r24136694;
double r24136696 = r24136687 / r24136695;
double r24136697 = r24136686 + r24136696;
return r24136697;
}




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.3 |
Initial program 2.1
Simplified0.2
rmApplied div-inv0.3
rmApplied fma-udef0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019172 +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))))