x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}x + \left(\frac{z}{1 + \left(t - z\right)} \cdot a - \frac{y}{1 + \left(t - z\right)} \cdot a\right)double f(double x, double y, double z, double t, double a) {
double r546608 = x;
double r546609 = y;
double r546610 = z;
double r546611 = r546609 - r546610;
double r546612 = t;
double r546613 = r546612 - r546610;
double r546614 = 1.0;
double r546615 = r546613 + r546614;
double r546616 = a;
double r546617 = r546615 / r546616;
double r546618 = r546611 / r546617;
double r546619 = r546608 - r546618;
return r546619;
}
double f(double x, double y, double z, double t, double a) {
double r546620 = x;
double r546621 = z;
double r546622 = 1.0;
double r546623 = t;
double r546624 = r546623 - r546621;
double r546625 = r546622 + r546624;
double r546626 = r546621 / r546625;
double r546627 = a;
double r546628 = r546626 * r546627;
double r546629 = y;
double r546630 = r546629 / r546625;
double r546631 = r546630 * r546627;
double r546632 = r546628 - r546631;
double r546633 = r546620 + r546632;
return r546633;
}




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.2 |
| Herbie | 0.2 |
Initial program 2.1
Simplified2.1
rmApplied div-sub2.1
Simplified1.0
Simplified0.2
Final simplification0.2
herbie shell --seed 2019194
(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))))