\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 -227369802444031.66:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \sqrt[3]{c} \cdot \left(\left(4 \cdot a\right) \cdot \left(\sqrt[3]{c} \cdot \sqrt[3]{c}\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}\\
\mathbf{elif}\;b \le 9.179168538250646 \cdot 10^{+63}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{a}{b} \cdot c - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r687943 = b;
double r687944 = 0.0;
bool r687945 = r687943 >= r687944;
double r687946 = 2.0;
double r687947 = c;
double r687948 = r687946 * r687947;
double r687949 = -r687943;
double r687950 = r687943 * r687943;
double r687951 = 4.0;
double r687952 = a;
double r687953 = r687951 * r687952;
double r687954 = r687953 * r687947;
double r687955 = r687950 - r687954;
double r687956 = sqrt(r687955);
double r687957 = r687949 - r687956;
double r687958 = r687948 / r687957;
double r687959 = r687949 + r687956;
double r687960 = r687946 * r687952;
double r687961 = r687959 / r687960;
double r687962 = r687945 ? r687958 : r687961;
return r687962;
}
double f(double a, double b, double c) {
double r687963 = b;
double r687964 = -227369802444031.66;
bool r687965 = r687963 <= r687964;
double r687966 = 0.0;
bool r687967 = r687963 >= r687966;
double r687968 = 2.0;
double r687969 = c;
double r687970 = r687968 * r687969;
double r687971 = -r687963;
double r687972 = r687963 * r687963;
double r687973 = cbrt(r687969);
double r687974 = 4.0;
double r687975 = a;
double r687976 = r687974 * r687975;
double r687977 = r687973 * r687973;
double r687978 = r687976 * r687977;
double r687979 = r687973 * r687978;
double r687980 = r687972 - r687979;
double r687981 = sqrt(r687980);
double r687982 = r687971 - r687981;
double r687983 = r687970 / r687982;
double r687984 = r687969 / r687963;
double r687985 = r687963 / r687975;
double r687986 = r687984 - r687985;
double r687987 = r687967 ? r687983 : r687986;
double r687988 = 9.179168538250646e+63;
bool r687989 = r687963 <= r687988;
double r687990 = r687976 * r687969;
double r687991 = r687972 - r687990;
double r687992 = sqrt(r687991);
double r687993 = r687971 - r687992;
double r687994 = r687970 / r687993;
double r687995 = sqrt(r687992);
double r687996 = r687995 * r687995;
double r687997 = r687971 + r687996;
double r687998 = r687968 * r687975;
double r687999 = r687997 / r687998;
double r688000 = r687967 ? r687994 : r687999;
double r688001 = r687975 / r687963;
double r688002 = r688001 * r687969;
double r688003 = r688002 - r687963;
double r688004 = r687968 * r688003;
double r688005 = r687970 / r688004;
double r688006 = r687971 + r687992;
double r688007 = r688006 / r687998;
double r688008 = r687967 ? r688005 : r688007;
double r688009 = r687989 ? r688000 : r688008;
double r688010 = r687965 ? r687987 : r688009;
return r688010;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -227369802444031.66Initial program 32.9
Taylor expanded around -inf 10.8
Simplified6.8
Taylor expanded around 0 6.7
rmApplied add-cube-cbrt6.7
Applied associate-*r*6.7
if -227369802444031.66 < b < 9.179168538250646e+63Initial program 9.4
rmApplied add-sqr-sqrt9.4
Applied sqrt-prod9.5
if 9.179168538250646e+63 < b Initial program 25.7
Taylor expanded around inf 7.7
Simplified4.1
Final simplification7.4
herbie shell --seed 2019146
(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))))