{\left(r + \sqrt{{q}^{3} + {r}^{2}}\right)}^{\left(\frac{1}{3}\right)} + {\left(r + \sqrt{{q}^{3} - {r}^{2}}\right)}^{\left(\frac{1}{3}\right)}{\left(r + \sqrt{{q}^{3} + {r}^{2}}\right)}^{\left(\frac{1}{3}\right)} + {\left(r + \sqrt{{q}^{3} - {r}^{2}}\right)}^{\left(\frac{1}{3}\right)}double code(double r, double q) {
return ((double) (((double) pow(((double) (r + ((double) sqrt(((double) (((double) pow(q, 3.0)) + ((double) pow(r, 2.0)))))))), ((double) (1.0 / 3.0)))) + ((double) pow(((double) (r + ((double) sqrt(((double) (((double) pow(q, 3.0)) - ((double) pow(r, 2.0)))))))), ((double) (1.0 / 3.0))))));
}
double code(double r, double q) {
return ((double) (((double) pow(((double) (r + ((double) sqrt(((double) (((double) pow(q, 3.0)) + ((double) pow(r, 2.0)))))))), ((double) (1.0 / 3.0)))) + ((double) pow(((double) (r + ((double) sqrt(((double) (((double) pow(q, 3.0)) - ((double) pow(r, 2.0)))))))), ((double) (1.0 / 3.0))))));
}



Bits error versus r



Bits error versus q
Results
Initial program 43.9
Final simplification43.9
herbie shell --seed 2020153
(FPCore (r q)
:name "(+ (pow (+ r (sqrt (+ (pow q 3) (pow r 2)))) (/ 1 3)) (pow (+ r (sqrt (- (pow q 3) (pow r 2)))) (/ 1 3)))"
:precision binary64
(+ (pow (+ r (sqrt (+ (pow q 3.0) (pow r 2.0)))) (/ 1.0 3.0)) (pow (+ r (sqrt (- (pow q 3.0) (pow r 2.0)))) (/ 1.0 3.0))))