\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -1.665963569877209 \cdot 10^{+64}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2}{\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}}{c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.0167317209326723 \cdot 10^{+50}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\left(b - \sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}\right)}{a \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - \frac{a \cdot 2}{\frac{b}{c}}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \left(\frac{a}{\frac{b}{c}} - b\right)}{a \cdot 2}\\
\end{array}double f(double a, double b, double c) {
double r559101 = b;
double r559102 = 0.0;
bool r559103 = r559101 >= r559102;
double r559104 = 2.0;
double r559105 = c;
double r559106 = r559104 * r559105;
double r559107 = -r559101;
double r559108 = r559101 * r559101;
double r559109 = 4.0;
double r559110 = a;
double r559111 = r559109 * r559110;
double r559112 = r559111 * r559105;
double r559113 = r559108 - r559112;
double r559114 = sqrt(r559113);
double r559115 = r559107 - r559114;
double r559116 = r559106 / r559115;
double r559117 = r559107 + r559114;
double r559118 = r559104 * r559110;
double r559119 = r559117 / r559118;
double r559120 = r559103 ? r559116 : r559119;
return r559120;
}
double f(double a, double b, double c) {
double r559121 = b;
double r559122 = -1.665963569877209e+64;
bool r559123 = r559121 <= r559122;
double r559124 = 0.0;
bool r559125 = r559121 >= r559124;
double r559126 = 2.0;
double r559127 = -r559121;
double r559128 = r559121 * r559121;
double r559129 = a;
double r559130 = 4.0;
double r559131 = r559129 * r559130;
double r559132 = c;
double r559133 = r559131 * r559132;
double r559134 = r559128 - r559133;
double r559135 = sqrt(r559134);
double r559136 = r559127 - r559135;
double r559137 = r559136 / r559132;
double r559138 = r559126 / r559137;
double r559139 = r559132 / r559121;
double r559140 = r559121 / r559129;
double r559141 = r559139 - r559140;
double r559142 = r559125 ? r559138 : r559141;
double r559143 = 2.0167317209326723e+50;
bool r559144 = r559121 <= r559143;
double r559145 = r559126 * r559132;
double r559146 = r559145 / r559136;
double r559147 = r559121 - r559135;
double r559148 = -r559147;
double r559149 = r559129 * r559126;
double r559150 = r559148 / r559149;
double r559151 = r559125 ? r559146 : r559150;
double r559152 = r559121 / r559132;
double r559153 = r559149 / r559152;
double r559154 = r559121 - r559153;
double r559155 = r559127 - r559154;
double r559156 = r559145 / r559155;
double r559157 = r559129 / r559152;
double r559158 = r559157 - r559121;
double r559159 = r559126 * r559158;
double r559160 = r559159 / r559149;
double r559161 = r559125 ? r559156 : r559160;
double r559162 = r559144 ? r559151 : r559161;
double r559163 = r559123 ? r559142 : r559162;
return r559163;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.665963569877209e+64Initial program 37.7
Taylor expanded around -inf 10.6
Simplified5.2
Taylor expanded around 0 5.2
rmApplied associate-/l*5.2
if -1.665963569877209e+64 < b < 2.0167317209326723e+50Initial program 9.2
rmApplied add-sqr-sqrt9.3
rmApplied neg-sub09.3
Applied associate-+l-9.3
Simplified9.2
if 2.0167317209326723e+50 < b Initial program 25.3
Taylor expanded around -inf 25.3
Simplified25.3
Taylor expanded around inf 7.2
Simplified3.9
Final simplification6.9
herbie shell --seed 2019138
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))