x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}x - \frac{y - z}{\left(t - z\right) + 1} \cdot adouble f(double x, double y, double z, double t, double a) {
double r502322 = x;
double r502323 = y;
double r502324 = z;
double r502325 = r502323 - r502324;
double r502326 = t;
double r502327 = r502326 - r502324;
double r502328 = 1.0;
double r502329 = r502327 + r502328;
double r502330 = a;
double r502331 = r502329 / r502330;
double r502332 = r502325 / r502331;
double r502333 = r502322 - r502332;
return r502333;
}
double f(double x, double y, double z, double t, double a) {
double r502334 = x;
double r502335 = y;
double r502336 = z;
double r502337 = r502335 - r502336;
double r502338 = t;
double r502339 = r502338 - r502336;
double r502340 = 1.0;
double r502341 = r502339 + r502340;
double r502342 = r502337 / r502341;
double r502343 = a;
double r502344 = r502342 * r502343;
double r502345 = r502334 - r502344;
return r502345;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.9 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 1.9
rmApplied associate-/r/0.2
Final simplification0.2
herbie shell --seed 2020062 +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))))