\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\sqrt[3]{\mathsf{fma}\left(\left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)}}\right), \left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)}}\right), \left(-b\right)\right)}}{a} \cdot \frac{\sqrt[3]{\mathsf{fma}\left(\left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)}}\right), \left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)}}\right), \left(-b\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)}}\right), \left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)}}\right), \left(-b\right)\right)}}{3}double f(double a, double b, double c, double __attribute__((unused)) d) {
double r2552282 = b;
double r2552283 = -r2552282;
double r2552284 = r2552282 * r2552282;
double r2552285 = 3.0;
double r2552286 = a;
double r2552287 = r2552285 * r2552286;
double r2552288 = c;
double r2552289 = r2552287 * r2552288;
double r2552290 = r2552284 - r2552289;
double r2552291 = sqrt(r2552290);
double r2552292 = r2552283 + r2552291;
double r2552293 = r2552292 / r2552287;
return r2552293;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r2552294 = c;
double r2552295 = a;
double r2552296 = -3.0;
double r2552297 = r2552295 * r2552296;
double r2552298 = b;
double r2552299 = r2552298 * r2552298;
double r2552300 = fma(r2552294, r2552297, r2552299);
double r2552301 = sqrt(r2552300);
double r2552302 = sqrt(r2552301);
double r2552303 = -r2552298;
double r2552304 = fma(r2552302, r2552302, r2552303);
double r2552305 = cbrt(r2552304);
double r2552306 = r2552305 / r2552295;
double r2552307 = r2552305 * r2552305;
double r2552308 = 3.0;
double r2552309 = r2552307 / r2552308;
double r2552310 = r2552306 * r2552309;
return r2552310;
}



Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
Initial program 52.6
Simplified52.6
rmApplied add-sqr-sqrt52.6
Applied sqrt-prod52.4
Applied fma-neg51.9
rmApplied add-cube-cbrt51.9
Applied times-frac51.9
Final simplification51.9
herbie shell --seed 2019129 +o rules:numerics
(FPCore (a b c d)
: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)))