x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}\left(a \cdot \frac{\sqrt[3]{z - y} \cdot \sqrt[3]{z - y}}{\sqrt[3]{\left(t - z\right) + 1} \cdot \sqrt[3]{\left(t - z\right) + 1}}\right) \cdot \frac{\sqrt[3]{z - y}}{\sqrt[3]{\left(t - z\right) + 1}} + xdouble f(double x, double y, double z, double t, double a) {
double r574227 = x;
double r574228 = y;
double r574229 = z;
double r574230 = r574228 - r574229;
double r574231 = t;
double r574232 = r574231 - r574229;
double r574233 = 1.0;
double r574234 = r574232 + r574233;
double r574235 = a;
double r574236 = r574234 / r574235;
double r574237 = r574230 / r574236;
double r574238 = r574227 - r574237;
return r574238;
}
double f(double x, double y, double z, double t, double a) {
double r574239 = a;
double r574240 = z;
double r574241 = y;
double r574242 = r574240 - r574241;
double r574243 = cbrt(r574242);
double r574244 = r574243 * r574243;
double r574245 = t;
double r574246 = r574245 - r574240;
double r574247 = 1.0;
double r574248 = r574246 + r574247;
double r574249 = cbrt(r574248);
double r574250 = r574249 * r574249;
double r574251 = r574244 / r574250;
double r574252 = r574239 * r574251;
double r574253 = r574243 / r574249;
double r574254 = r574252 * r574253;
double r574255 = x;
double r574256 = r574254 + r574255;
return r574256;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 2.2 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 2.2
Simplified0.3
rmApplied fma-udef0.3
rmApplied add-cube-cbrt0.7
Applied add-cube-cbrt0.6
Applied times-frac0.6
Applied associate-*r*0.4
Final simplification0.4
herbie shell --seed 2020046 +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))))