\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\begin{array}{l}
\mathbf{if}\;\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} + \left(-b\right)}{3 \cdot a} \le -7.229283912275938988181378533023381527389 \cdot 10^{-10}:\\
\;\;\;\;\frac{\frac{\left(b \cdot b - \left(c \cdot a\right) \cdot 3\right) \cdot \sqrt{b \cdot b - \left(c \cdot a\right) \cdot 3} - b \cdot \left(b \cdot b\right)}{\mathsf{fma}\left(\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 3}, \sqrt{b \cdot b - \left(c \cdot a\right) \cdot 3} + b, b \cdot b\right)}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r4921210 = b;
double r4921211 = -r4921210;
double r4921212 = r4921210 * r4921210;
double r4921213 = 3.0;
double r4921214 = a;
double r4921215 = r4921213 * r4921214;
double r4921216 = c;
double r4921217 = r4921215 * r4921216;
double r4921218 = r4921212 - r4921217;
double r4921219 = sqrt(r4921218);
double r4921220 = r4921211 + r4921219;
double r4921221 = r4921220 / r4921215;
return r4921221;
}
double f(double a, double b, double c) {
double r4921222 = b;
double r4921223 = r4921222 * r4921222;
double r4921224 = 3.0;
double r4921225 = a;
double r4921226 = r4921224 * r4921225;
double r4921227 = c;
double r4921228 = r4921226 * r4921227;
double r4921229 = r4921223 - r4921228;
double r4921230 = sqrt(r4921229);
double r4921231 = -r4921222;
double r4921232 = r4921230 + r4921231;
double r4921233 = r4921232 / r4921226;
double r4921234 = -7.229283912275939e-10;
bool r4921235 = r4921233 <= r4921234;
double r4921236 = r4921227 * r4921225;
double r4921237 = r4921236 * r4921224;
double r4921238 = r4921223 - r4921237;
double r4921239 = sqrt(r4921238);
double r4921240 = r4921238 * r4921239;
double r4921241 = r4921222 * r4921223;
double r4921242 = r4921240 - r4921241;
double r4921243 = r4921239 + r4921222;
double r4921244 = fma(r4921239, r4921243, r4921223);
double r4921245 = r4921242 / r4921244;
double r4921246 = r4921245 / r4921226;
double r4921247 = -0.5;
double r4921248 = r4921227 / r4921222;
double r4921249 = r4921247 * r4921248;
double r4921250 = r4921235 ? r4921246 : r4921249;
return r4921250;
}



Bits error versus a



Bits error versus b



Bits error versus c
if (/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)) < -7.229283912275939e-10Initial program 22.7
rmApplied flip3-+22.8
Simplified22.1
Simplified22.1
if -7.229283912275939e-10 < (/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)) Initial program 55.7
Taylor expanded around inf 3.7
Final simplification10.2
herbie shell --seed 2019169 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))