\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{3 \cdot a}{3 \cdot a} \cdot \frac{c}{\left(-b\right) - \sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)}}double f(double a, double b, double c) {
double r88123 = b;
double r88124 = -r88123;
double r88125 = r88123 * r88123;
double r88126 = 3.0;
double r88127 = a;
double r88128 = r88126 * r88127;
double r88129 = c;
double r88130 = r88128 * r88129;
double r88131 = r88125 - r88130;
double r88132 = sqrt(r88131);
double r88133 = r88124 + r88132;
double r88134 = r88133 / r88128;
return r88134;
}
double f(double a, double b, double c) {
double r88135 = 3.0;
double r88136 = a;
double r88137 = r88135 * r88136;
double r88138 = r88137 / r88137;
double r88139 = c;
double r88140 = b;
double r88141 = -r88140;
double r88142 = 2.0;
double r88143 = pow(r88140, r88142);
double r88144 = r88136 * r88139;
double r88145 = r88135 * r88144;
double r88146 = r88143 - r88145;
double r88147 = sqrt(r88146);
double r88148 = r88141 - r88147;
double r88149 = r88139 / r88148;
double r88150 = r88138 * r88149;
return r88150;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.7
rmApplied flip-+52.7
Simplified0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-/l*0.6
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied add-cube-cbrt0.5
Applied times-frac0.5
Simplified0.5
Simplified0.1
Final simplification0.1
herbie shell --seed 2019325
(FPCore (a b c)
:name "Cubic critical, wide range"
:precision binary64
:pre (and (< 4.93038e-32 a 2.02824e+31) (< 4.93038e-32 b 2.02824e+31) (< 4.93038e-32 c 2.02824e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))