\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 -3.263941314600607 \cdot 10^{+152}:\\
\;\;\;\;\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{2 \cdot \left(a \cdot \frac{c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.460432811970223 \cdot 10^{+121}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(a \cdot \frac{c}{b} - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r2279789 = b;
double r2279790 = 0.0;
bool r2279791 = r2279789 >= r2279790;
double r2279792 = 2.0;
double r2279793 = c;
double r2279794 = r2279792 * r2279793;
double r2279795 = -r2279789;
double r2279796 = r2279789 * r2279789;
double r2279797 = 4.0;
double r2279798 = a;
double r2279799 = r2279797 * r2279798;
double r2279800 = r2279799 * r2279793;
double r2279801 = r2279796 - r2279800;
double r2279802 = sqrt(r2279801);
double r2279803 = r2279795 - r2279802;
double r2279804 = r2279794 / r2279803;
double r2279805 = r2279795 + r2279802;
double r2279806 = r2279792 * r2279798;
double r2279807 = r2279805 / r2279806;
double r2279808 = r2279791 ? r2279804 : r2279807;
return r2279808;
}
double f(double a, double b, double c) {
double r2279809 = b;
double r2279810 = -3.263941314600607e+152;
bool r2279811 = r2279809 <= r2279810;
double r2279812 = 0.0;
bool r2279813 = r2279809 >= r2279812;
double r2279814 = 2.0;
double r2279815 = c;
double r2279816 = r2279814 * r2279815;
double r2279817 = -r2279809;
double r2279818 = r2279809 * r2279809;
double r2279819 = 4.0;
double r2279820 = a;
double r2279821 = r2279819 * r2279820;
double r2279822 = r2279821 * r2279815;
double r2279823 = r2279818 - r2279822;
double r2279824 = sqrt(r2279823);
double r2279825 = r2279817 - r2279824;
double r2279826 = r2279816 / r2279825;
double r2279827 = r2279815 / r2279809;
double r2279828 = r2279820 * r2279827;
double r2279829 = r2279828 - r2279809;
double r2279830 = r2279814 * r2279829;
double r2279831 = r2279814 * r2279820;
double r2279832 = r2279830 / r2279831;
double r2279833 = r2279813 ? r2279826 : r2279832;
double r2279834 = 2.460432811970223e+121;
bool r2279835 = r2279809 <= r2279834;
double r2279836 = sqrt(r2279824);
double r2279837 = r2279836 * r2279836;
double r2279838 = r2279817 - r2279837;
double r2279839 = r2279816 / r2279838;
double r2279840 = r2279824 + r2279817;
double r2279841 = r2279840 / r2279831;
double r2279842 = r2279813 ? r2279839 : r2279841;
double r2279843 = r2279816 / r2279830;
double r2279844 = r2279813 ? r2279843 : r2279841;
double r2279845 = r2279835 ? r2279842 : r2279844;
double r2279846 = r2279811 ? r2279833 : r2279845;
return r2279846;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.263941314600607e+152Initial program 60.1
rmApplied add-sqr-sqrt60.1
Applied sqrt-prod60.1
Taylor expanded around -inf 11.7
Simplified2.5
if -3.263941314600607e+152 < b < 2.460432811970223e+121Initial program 8.3
rmApplied add-sqr-sqrt8.4
if 2.460432811970223e+121 < b Initial program 32.8
Taylor expanded around inf 7.2
Simplified2.3
Final simplification6.5
herbie shell --seed 2019128
(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))))