\begin{array}{l}
\mathbf{if}\;b \ge 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.3383903547554234 \cdot 10^{+154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 6.084394045016185 \cdot 10^{+85}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\left(\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right) \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(\frac{a}{b} \cdot c - b\right) \cdot 2}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r502844 = b;
double r502845 = 0.0;
bool r502846 = r502844 >= r502845;
double r502847 = -r502844;
double r502848 = r502844 * r502844;
double r502849 = 4.0;
double r502850 = a;
double r502851 = r502849 * r502850;
double r502852 = c;
double r502853 = r502851 * r502852;
double r502854 = r502848 - r502853;
double r502855 = sqrt(r502854);
double r502856 = r502847 - r502855;
double r502857 = 2.0;
double r502858 = r502857 * r502850;
double r502859 = r502856 / r502858;
double r502860 = r502857 * r502852;
double r502861 = r502847 + r502855;
double r502862 = r502860 / r502861;
double r502863 = r502846 ? r502859 : r502862;
return r502863;
}
double f(double a, double b, double c) {
double r502864 = b;
double r502865 = -1.3383903547554234e+154;
bool r502866 = r502864 <= r502865;
double r502867 = 0.0;
bool r502868 = r502864 >= r502867;
double r502869 = -r502864;
double r502870 = r502864 * r502864;
double r502871 = 4.0;
double r502872 = a;
double r502873 = r502871 * r502872;
double r502874 = c;
double r502875 = r502873 * r502874;
double r502876 = r502870 - r502875;
double r502877 = sqrt(r502876);
double r502878 = r502869 - r502877;
double r502879 = 2.0;
double r502880 = r502879 * r502872;
double r502881 = r502878 / r502880;
double r502882 = r502874 * r502879;
double r502883 = r502872 * r502874;
double r502884 = r502883 / r502864;
double r502885 = r502879 * r502884;
double r502886 = r502885 - r502864;
double r502887 = r502869 + r502886;
double r502888 = r502882 / r502887;
double r502889 = r502868 ? r502881 : r502888;
double r502890 = 6.084394045016185e+85;
bool r502891 = r502864 <= r502890;
double r502892 = cbrt(r502876);
double r502893 = r502892 * r502892;
double r502894 = r502893 * r502892;
double r502895 = sqrt(r502894);
double r502896 = r502869 - r502895;
double r502897 = r502896 / r502880;
double r502898 = r502877 + r502869;
double r502899 = r502882 / r502898;
double r502900 = r502868 ? r502897 : r502899;
double r502901 = r502872 / r502864;
double r502902 = r502901 * r502874;
double r502903 = r502902 - r502864;
double r502904 = r502903 * r502879;
double r502905 = r502904 / r502880;
double r502906 = r502868 ? r502905 : r502899;
double r502907 = r502891 ? r502900 : r502906;
double r502908 = r502866 ? r502889 : r502907;
return r502908;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3383903547554234e+154Initial program 38.0
rmApplied add-cube-cbrt38.0
Taylor expanded around -inf 7.0
if -1.3383903547554234e+154 < b < 6.084394045016185e+85Initial program 8.0
rmApplied add-cube-cbrt8.2
if 6.084394045016185e+85 < b Initial program 40.9
rmApplied add-sqr-sqrt40.9
Applied sqrt-prod41.0
Taylor expanded around inf 8.9
Simplified3.3
Final simplification7.2
herbie shell --seed 2019132
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))