\begin{array}{l}
\mathbf{if}\;b \ge 0.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.990473150623290141018988832760520387873 \cdot 10^{112}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\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}} \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(\frac{a}{b} \cdot \left(c \cdot 2\right) - b\right) + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.932191065039699403664081156929555460562 \cdot 10^{107}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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 - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - \frac{a}{b} \cdot \left(c \cdot 2\right)\right)}{a \cdot 2}\\
\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 r1228063 = b;
double r1228064 = 0.0;
bool r1228065 = r1228063 >= r1228064;
double r1228066 = -r1228063;
double r1228067 = r1228063 * r1228063;
double r1228068 = 4.0;
double r1228069 = a;
double r1228070 = r1228068 * r1228069;
double r1228071 = c;
double r1228072 = r1228070 * r1228071;
double r1228073 = r1228067 - r1228072;
double r1228074 = sqrt(r1228073);
double r1228075 = r1228066 - r1228074;
double r1228076 = 2.0;
double r1228077 = r1228076 * r1228069;
double r1228078 = r1228075 / r1228077;
double r1228079 = r1228076 * r1228071;
double r1228080 = r1228066 + r1228074;
double r1228081 = r1228079 / r1228080;
double r1228082 = r1228065 ? r1228078 : r1228081;
return r1228082;
}
double f(double a, double b, double c) {
double r1228083 = b;
double r1228084 = -1.99047315062329e+112;
bool r1228085 = r1228083 <= r1228084;
double r1228086 = 0.0;
bool r1228087 = r1228083 >= r1228086;
double r1228088 = -r1228083;
double r1228089 = r1228083 * r1228083;
double r1228090 = 4.0;
double r1228091 = a;
double r1228092 = r1228090 * r1228091;
double r1228093 = c;
double r1228094 = r1228092 * r1228093;
double r1228095 = r1228089 - r1228094;
double r1228096 = cbrt(r1228095);
double r1228097 = r1228096 * r1228096;
double r1228098 = sqrt(r1228097);
double r1228099 = sqrt(r1228096);
double r1228100 = r1228098 * r1228099;
double r1228101 = r1228088 - r1228100;
double r1228102 = 2.0;
double r1228103 = r1228091 * r1228102;
double r1228104 = r1228101 / r1228103;
double r1228105 = r1228093 * r1228102;
double r1228106 = r1228091 / r1228083;
double r1228107 = r1228106 * r1228105;
double r1228108 = r1228107 - r1228083;
double r1228109 = r1228108 + r1228088;
double r1228110 = r1228105 / r1228109;
double r1228111 = r1228087 ? r1228104 : r1228110;
double r1228112 = 3.9321910650396994e+107;
bool r1228113 = r1228083 <= r1228112;
double r1228114 = sqrt(r1228095);
double r1228115 = r1228088 - r1228114;
double r1228116 = r1228115 / r1228103;
double r1228117 = sqrt(r1228114);
double r1228118 = r1228117 * r1228117;
double r1228119 = r1228118 + r1228088;
double r1228120 = r1228105 / r1228119;
double r1228121 = r1228087 ? r1228116 : r1228120;
double r1228122 = r1228083 - r1228107;
double r1228123 = r1228088 - r1228122;
double r1228124 = r1228123 / r1228103;
double r1228125 = r1228114 + r1228088;
double r1228126 = r1228105 / r1228125;
double r1228127 = r1228087 ? r1228124 : r1228126;
double r1228128 = r1228113 ? r1228121 : r1228127;
double r1228129 = r1228085 ? r1228111 : r1228128;
return r1228129;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.99047315062329e+112Initial program 31.8
Taylor expanded around -inf 6.9
Simplified2.9
rmApplied add-cube-cbrt2.9
Applied sqrt-prod2.9
if -1.99047315062329e+112 < b < 3.9321910650396994e+107Initial program 9.4
rmApplied add-sqr-sqrt9.4
Applied sqrt-prod9.5
if 3.9321910650396994e+107 < b Initial program 49.2
Taylor expanded around inf 10.0
Simplified3.6
Final simplification7.2
herbie shell --seed 2019171
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))