\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 -9.448476596858411 \cdot 10^{+162}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - e^{\log \left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{2 \cdot \left(c \cdot \frac{a}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 2.0410715251838527 \cdot 10^{+49}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}} \cdot \sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b + -2 \cdot \left(c \cdot \frac{a}{b}\right)\right)}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{2 \cdot \left(c \cdot \frac{a}{b} - b\right)}\\
\end{array}double f(double a, double b, double c) {
double r1329013 = b;
double r1329014 = 0.0;
bool r1329015 = r1329013 >= r1329014;
double r1329016 = -r1329013;
double r1329017 = r1329013 * r1329013;
double r1329018 = 4.0;
double r1329019 = a;
double r1329020 = r1329018 * r1329019;
double r1329021 = c;
double r1329022 = r1329020 * r1329021;
double r1329023 = r1329017 - r1329022;
double r1329024 = sqrt(r1329023);
double r1329025 = r1329016 - r1329024;
double r1329026 = 2.0;
double r1329027 = r1329026 * r1329019;
double r1329028 = r1329025 / r1329027;
double r1329029 = r1329026 * r1329021;
double r1329030 = r1329016 + r1329024;
double r1329031 = r1329029 / r1329030;
double r1329032 = r1329015 ? r1329028 : r1329031;
return r1329032;
}
double f(double a, double b, double c) {
double r1329033 = b;
double r1329034 = -9.448476596858411e+162;
bool r1329035 = r1329033 <= r1329034;
double r1329036 = 0.0;
bool r1329037 = r1329033 >= r1329036;
double r1329038 = -r1329033;
double r1329039 = r1329033 * r1329033;
double r1329040 = 4.0;
double r1329041 = a;
double r1329042 = r1329040 * r1329041;
double r1329043 = c;
double r1329044 = r1329042 * r1329043;
double r1329045 = r1329039 - r1329044;
double r1329046 = sqrt(r1329045);
double r1329047 = log(r1329046);
double r1329048 = exp(r1329047);
double r1329049 = r1329038 - r1329048;
double r1329050 = 2.0;
double r1329051 = r1329041 * r1329050;
double r1329052 = r1329049 / r1329051;
double r1329053 = r1329043 * r1329050;
double r1329054 = r1329041 / r1329033;
double r1329055 = r1329043 * r1329054;
double r1329056 = r1329055 - r1329033;
double r1329057 = r1329050 * r1329056;
double r1329058 = r1329053 / r1329057;
double r1329059 = r1329037 ? r1329052 : r1329058;
double r1329060 = 2.0410715251838527e+49;
bool r1329061 = r1329033 <= r1329060;
double r1329062 = r1329038 - r1329046;
double r1329063 = r1329062 / r1329051;
double r1329064 = r1329041 * r1329043;
double r1329065 = r1329040 * r1329064;
double r1329066 = r1329039 - r1329065;
double r1329067 = sqrt(r1329066);
double r1329068 = sqrt(r1329067);
double r1329069 = r1329068 * r1329068;
double r1329070 = r1329069 + r1329038;
double r1329071 = r1329053 / r1329070;
double r1329072 = r1329037 ? r1329063 : r1329071;
double r1329073 = -2.0;
double r1329074 = r1329073 * r1329055;
double r1329075 = r1329033 + r1329074;
double r1329076 = r1329038 - r1329075;
double r1329077 = r1329076 / r1329051;
double r1329078 = r1329037 ? r1329077 : r1329058;
double r1329079 = r1329061 ? r1329072 : r1329078;
double r1329080 = r1329035 ? r1329059 : r1329079;
return r1329080;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -9.448476596858411e+162Initial program 39.6
Taylor expanded around 0 39.6
Simplified39.6
rmApplied add-sqr-sqrt39.6
Applied sqrt-prod39.6
Taylor expanded around -inf 7.1
Simplified1.1
rmApplied add-exp-log1.1
if -9.448476596858411e+162 < b < 2.0410715251838527e+49Initial program 9.2
Taylor expanded around 0 9.1
Simplified9.1
rmApplied add-sqr-sqrt9.1
Applied sqrt-prod9.3
if 2.0410715251838527e+49 < b Initial program 36.3
Taylor expanded around 0 36.3
Simplified36.3
rmApplied add-sqr-sqrt36.3
Applied sqrt-prod36.3
Taylor expanded around -inf 36.3
Simplified36.3
Taylor expanded around inf 11.1
Simplified6.4
Final simplification7.4
herbie shell --seed 2019162
(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)))))))