\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}}{3} \cdot \frac{\sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}} \cdot \left(\sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}} \cdot \sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}}\right)}{a}double f(double a, double b, double c) {
double r3632329 = b;
double r3632330 = -r3632329;
double r3632331 = r3632329 * r3632329;
double r3632332 = 3.0;
double r3632333 = a;
double r3632334 = r3632332 * r3632333;
double r3632335 = c;
double r3632336 = r3632334 * r3632335;
double r3632337 = r3632331 - r3632336;
double r3632338 = sqrt(r3632337);
double r3632339 = r3632330 + r3632338;
double r3632340 = r3632339 / r3632334;
return r3632340;
}
double f(double a, double b, double c) {
double r3632341 = -3.0;
double r3632342 = a;
double r3632343 = c;
double r3632344 = r3632342 * r3632343;
double r3632345 = b;
double r3632346 = r3632345 * r3632345;
double r3632347 = fma(r3632341, r3632344, r3632346);
double r3632348 = sqrt(r3632347);
double r3632349 = sqrt(r3632348);
double r3632350 = -r3632345;
double r3632351 = fma(r3632349, r3632349, r3632350);
double r3632352 = cbrt(r3632351);
double r3632353 = r3632352 * r3632352;
double r3632354 = r3632352 * r3632353;
double r3632355 = cbrt(r3632354);
double r3632356 = r3632355 * r3632352;
double r3632357 = 3.0;
double r3632358 = r3632356 / r3632357;
double r3632359 = cbrt(r3632352);
double r3632360 = r3632359 * r3632359;
double r3632361 = r3632359 * r3632360;
double r3632362 = r3632361 / r3632342;
double r3632363 = r3632358 * r3632362;
return r3632363;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 52.4
Simplified52.4
rmApplied add-sqr-sqrt52.4
Applied sqrt-prod52.2
Applied fma-neg51.6
rmApplied add-cube-cbrt51.6
Applied times-frac51.6
rmApplied add-cube-cbrt51.6
rmApplied add-cube-cbrt51.6
Final simplification51.6
herbie shell --seed 2019138 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, wide range"
:pre (and (< 4.930380657631324e-32 a 2.028240960365167e+31) (< 4.930380657631324e-32 b 2.028240960365167e+31) (< 4.930380657631324e-32 c 2.028240960365167e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))