\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\begin{array}{l}
\mathbf{if}\;b \leq -3.0772718270963217 \cdot 10^{+137}:\\
\;\;\;\;\frac{1}{-1.5 \cdot \frac{a}{b}}\\
\mathbf{elif}\;b \leq -1.944440046579189 \cdot 10^{-259}:\\
\;\;\;\;\left(\sqrt{b \cdot b - \left(a \cdot 3\right) \cdot c} - b\right) \cdot \frac{0.3333333333333333}{a}\\
\mathbf{elif}\;b \leq 1.6151502496309929 \cdot 10^{+106}:\\
\;\;\;\;\frac{1}{\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot 3\right) \cdot c}}{c}}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}(FPCore (a b c) :precision binary64 (/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))
(FPCore (a b c)
:precision binary64
(if (<= b -3.0772718270963217e+137)
(/ 1.0 (* -1.5 (/ a b)))
(if (<= b -1.944440046579189e-259)
(* (- (sqrt (- (* b b) (* (* a 3.0) c))) b) (/ 0.3333333333333333 a))
(if (<= b 1.6151502496309929e+106)
(/ 1.0 (/ (- (- b) (sqrt (- (* b b) (* (* a 3.0) c)))) c))
(* -0.5 (/ c b))))))double code(double a, double b, double c) {
return (-b + sqrt((b * b) - ((3.0 * a) * c))) / (3.0 * a);
}
double code(double a, double b, double c) {
double tmp;
if (b <= -3.0772718270963217e+137) {
tmp = 1.0 / (-1.5 * (a / b));
} else if (b <= -1.944440046579189e-259) {
tmp = (sqrt((b * b) - ((a * 3.0) * c)) - b) * (0.3333333333333333 / a);
} else if (b <= 1.6151502496309929e+106) {
tmp = 1.0 / ((-b - sqrt((b * b) - ((a * 3.0) * c))) / c);
} else {
tmp = -0.5 * (c / b);
}
return tmp;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.07727182709632172e137Initial program 57.2
rmApplied flip-+_binary64_246163.8
Simplified62.7
rmApplied clear-num_binary64_248662.7
Simplified62.5
Taylor expanded around -inf 4.1
if -3.07727182709632172e137 < b < -1.94444004657918906e-259Initial program 8.4
rmApplied div-inv_binary64_24848.5
Simplified8.5
if -1.94444004657918906e-259 < b < 1.6151502496309929e106Initial program 31.3
rmApplied flip-+_binary64_246131.3
Simplified16.2
rmApplied clear-num_binary64_248616.3
Simplified9.4
if 1.6151502496309929e106 < b Initial program 59.6
Taylor expanded around inf 2.6
Final simplification6.9
herbie shell --seed 2020292
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))