\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.321979286063991120687913974760117599547 \cdot 10^{149}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 2000198799923726.5:\\
\;\;\;\;\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}{\sqrt{\left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} - b} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}\\
\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}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\end{array}double f(double a, double b, double c) {
double r33029 = b;
double r33030 = 0.0;
bool r33031 = r33029 >= r33030;
double r33032 = -r33029;
double r33033 = r33029 * r33029;
double r33034 = 4.0;
double r33035 = a;
double r33036 = r33034 * r33035;
double r33037 = c;
double r33038 = r33036 * r33037;
double r33039 = r33033 - r33038;
double r33040 = sqrt(r33039);
double r33041 = r33032 - r33040;
double r33042 = 2.0;
double r33043 = r33042 * r33035;
double r33044 = r33041 / r33043;
double r33045 = r33042 * r33037;
double r33046 = r33032 + r33040;
double r33047 = r33045 / r33046;
double r33048 = r33031 ? r33044 : r33047;
return r33048;
}
double f(double a, double b, double c) {
double r33049 = b;
double r33050 = -1.3219792860639911e+149;
bool r33051 = r33049 <= r33050;
double r33052 = 0.0;
bool r33053 = r33049 >= r33052;
double r33054 = -r33049;
double r33055 = r33049 * r33049;
double r33056 = 4.0;
double r33057 = a;
double r33058 = r33056 * r33057;
double r33059 = c;
double r33060 = r33058 * r33059;
double r33061 = r33055 - r33060;
double r33062 = sqrt(r33061);
double r33063 = r33054 - r33062;
double r33064 = 2.0;
double r33065 = r33064 * r33057;
double r33066 = r33063 / r33065;
double r33067 = r33064 * r33059;
double r33068 = r33057 * r33059;
double r33069 = r33068 / r33049;
double r33070 = r33064 * r33069;
double r33071 = 2.0;
double r33072 = r33071 * r33049;
double r33073 = r33070 - r33072;
double r33074 = r33067 / r33073;
double r33075 = r33053 ? r33066 : r33074;
double r33076 = 2000198799923726.5;
bool r33077 = r33049 <= r33076;
double r33078 = cbrt(r33061);
double r33079 = fabs(r33078);
double r33080 = sqrt(r33078);
double r33081 = r33079 * r33080;
double r33082 = r33081 - r33049;
double r33083 = sqrt(r33082);
double r33084 = r33062 - r33049;
double r33085 = sqrt(r33084);
double r33086 = r33083 * r33085;
double r33087 = r33067 / r33086;
double r33088 = r33053 ? r33066 : r33087;
double r33089 = r33073 / r33065;
double r33090 = r33067 / r33084;
double r33091 = r33053 ? r33089 : r33090;
double r33092 = r33077 ? r33088 : r33091;
double r33093 = r33051 ? r33075 : r33092;
return r33093;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3219792860639911e+149Initial program 36.9
Simplified36.9
Taylor expanded around -inf 6.7
if -1.3219792860639911e+149 < b < 2000198799923726.5Initial program 9.0
Simplified9.0
rmApplied add-sqr-sqrt9.2
rmApplied add-cube-cbrt9.2
Applied sqrt-prod9.2
Simplified9.2
if 2000198799923726.5 < b Initial program 34.0
Simplified34.0
Taylor expanded around inf 11.6
Final simplification9.3
herbie shell --seed 2019208
(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)))))))