x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}\mathsf{fma}\left(a, \frac{z}{\left(t - z\right) + 1} - \frac{y}{\left(t - z\right) + 1}, x\right)double f(double x, double y, double z, double t, double a) {
double r437111 = x;
double r437112 = y;
double r437113 = z;
double r437114 = r437112 - r437113;
double r437115 = t;
double r437116 = r437115 - r437113;
double r437117 = 1.0;
double r437118 = r437116 + r437117;
double r437119 = a;
double r437120 = r437118 / r437119;
double r437121 = r437114 / r437120;
double r437122 = r437111 - r437121;
return r437122;
}
double f(double x, double y, double z, double t, double a) {
double r437123 = a;
double r437124 = z;
double r437125 = t;
double r437126 = r437125 - r437124;
double r437127 = 1.0;
double r437128 = r437126 + r437127;
double r437129 = r437124 / r437128;
double r437130 = y;
double r437131 = r437130 / r437128;
double r437132 = r437129 - r437131;
double r437133 = x;
double r437134 = fma(r437123, r437132, r437133);
return r437134;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 1.9 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 1.9
Simplified0.2
rmApplied div-sub0.2
Final simplification0.2
herbie shell --seed 2019325 +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))))