\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -1.1730875761889226 \cdot 10^{119}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le -2.9300475349170912 \cdot 10^{-278}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\\
\mathbf{elif}\;b \le 7.19235649497330319 \cdot 10^{93}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\frac{\left(4 \cdot a\right) \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}double f(double a, double b, double c) {
double r39085 = b;
double r39086 = 0.0;
bool r39087 = r39085 >= r39086;
double r39088 = -r39085;
double r39089 = r39085 * r39085;
double r39090 = 4.0;
double r39091 = a;
double r39092 = r39090 * r39091;
double r39093 = c;
double r39094 = r39092 * r39093;
double r39095 = r39089 - r39094;
double r39096 = sqrt(r39095);
double r39097 = r39088 - r39096;
double r39098 = 2.0;
double r39099 = r39098 * r39091;
double r39100 = r39097 / r39099;
double r39101 = r39098 * r39093;
double r39102 = r39088 + r39096;
double r39103 = r39101 / r39102;
double r39104 = r39087 ? r39100 : r39103;
return r39104;
}
double f(double a, double b, double c) {
double r39105 = b;
double r39106 = -1.1730875761889226e+119;
bool r39107 = r39105 <= r39106;
double r39108 = 0.0;
bool r39109 = r39105 >= r39108;
double r39110 = -r39105;
double r39111 = r39105 * r39105;
double r39112 = 4.0;
double r39113 = a;
double r39114 = r39112 * r39113;
double r39115 = c;
double r39116 = r39114 * r39115;
double r39117 = r39111 - r39116;
double r39118 = sqrt(r39117);
double r39119 = r39110 - r39118;
double r39120 = 2.0;
double r39121 = r39120 * r39113;
double r39122 = r39119 / r39121;
double r39123 = r39120 * r39115;
double r39124 = cbrt(r39105);
double r39125 = r39124 * r39124;
double r39126 = r39113 / r39125;
double r39127 = r39115 / r39124;
double r39128 = r39126 * r39127;
double r39129 = r39120 * r39128;
double r39130 = r39129 - r39105;
double r39131 = r39110 + r39130;
double r39132 = r39123 / r39131;
double r39133 = r39109 ? r39122 : r39132;
double r39134 = -2.930047534917091e-278;
bool r39135 = r39105 <= r39134;
double r39136 = r39113 * r39115;
double r39137 = r39136 / r39105;
double r39138 = r39120 * r39137;
double r39139 = 2.0;
double r39140 = r39139 * r39105;
double r39141 = r39138 - r39140;
double r39142 = r39141 / r39121;
double r39143 = r39110 + r39118;
double r39144 = r39123 / r39143;
double r39145 = r39109 ? r39142 : r39144;
double r39146 = 7.192356494973303e+93;
bool r39147 = r39105 <= r39146;
double r39148 = r39116 / r39119;
double r39149 = r39123 / r39148;
double r39150 = r39109 ? r39122 : r39149;
double r39151 = r39147 ? r39150 : r39145;
double r39152 = r39135 ? r39145 : r39151;
double r39153 = r39107 ? r39133 : r39152;
return r39153;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.1730875761889226e+119Initial program 32.6
Taylor expanded around -inf 6.2
rmApplied add-cube-cbrt6.2
Applied times-frac1.8
if -1.1730875761889226e+119 < b < -2.930047534917091e-278 or 7.192356494973303e+93 < b Initial program 21.2
Taylor expanded around inf 8.8
if -2.930047534917091e-278 < b < 7.192356494973303e+93Initial program 9.3
rmApplied flip-+9.3
Simplified9.3
Final simplification7.5
herbie shell --seed 2020027
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))