\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r84509 = b;
double r84510 = -r84509;
double r84511 = r84509 * r84509;
double r84512 = 3.0;
double r84513 = a;
double r84514 = r84512 * r84513;
double r84515 = c;
double r84516 = r84514 * r84515;
double r84517 = r84511 - r84516;
double r84518 = sqrt(r84517);
double r84519 = r84510 + r84518;
double r84520 = r84519 / r84514;
return r84520;
}
double f(double a, double b, double c) {
double r84521 = c;
double r84522 = b;
double r84523 = -r84522;
double r84524 = r84522 * r84522;
double r84525 = 3.0;
double r84526 = a;
double r84527 = r84525 * r84526;
double r84528 = r84527 * r84521;
double r84529 = r84524 - r84528;
double r84530 = sqrt(r84529);
double r84531 = r84523 - r84530;
double r84532 = r84521 / r84531;
return r84532;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.6
rmApplied flip-+52.6
Simplified0.5
rmApplied div-inv0.6
Applied times-frac0.5
Simplified0.5
Final simplification0.1
herbie shell --seed 2019291
(FPCore (a b c)
:name "Cubic critical, wide range"
:precision binary64
:pre (and (< 4.93038e-32 a 2.02824e31) (< 4.93038e-32 b 2.02824e31) (< 4.93038e-32 c 2.02824e31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))