x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}x - \frac{1}{\frac{\sqrt[3]{\left(t - z\right) + 1} \cdot \sqrt[3]{\left(t - z\right) + 1}}{\sqrt[3]{a} \cdot \sqrt[3]{a}}} \cdot \frac{y - z}{\frac{\sqrt[3]{\left(t - z\right) + 1}}{\sqrt[3]{a}}}double f(double x, double y, double z, double t, double a) {
double r489335 = x;
double r489336 = y;
double r489337 = z;
double r489338 = r489336 - r489337;
double r489339 = t;
double r489340 = r489339 - r489337;
double r489341 = 1.0;
double r489342 = r489340 + r489341;
double r489343 = a;
double r489344 = r489342 / r489343;
double r489345 = r489338 / r489344;
double r489346 = r489335 - r489345;
return r489346;
}
double f(double x, double y, double z, double t, double a) {
double r489347 = x;
double r489348 = 1.0;
double r489349 = t;
double r489350 = z;
double r489351 = r489349 - r489350;
double r489352 = 1.0;
double r489353 = r489351 + r489352;
double r489354 = cbrt(r489353);
double r489355 = r489354 * r489354;
double r489356 = a;
double r489357 = cbrt(r489356);
double r489358 = r489357 * r489357;
double r489359 = r489355 / r489358;
double r489360 = r489348 / r489359;
double r489361 = y;
double r489362 = r489361 - r489350;
double r489363 = r489354 / r489357;
double r489364 = r489362 / r489363;
double r489365 = r489360 * r489364;
double r489366 = r489347 - r489365;
return r489366;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 2.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.8 |
Initial program 2.0
rmApplied add-cube-cbrt2.5
Applied add-cube-cbrt2.6
Applied times-frac2.6
Applied *-un-lft-identity2.6
Applied times-frac0.8
Final simplification0.8
herbie shell --seed 2019354 +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))))