\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -7.6038168240882645 \cdot 10^{144}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -3.2731438419880699 \cdot 10^{-203}:\\
\;\;\;\;\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}\\
\mathbf{elif}\;b \le 2.1125387673008883 \cdot 10^{122}:\\
\;\;\;\;\frac{\frac{\frac{1}{\frac{2}{4}}}{\frac{1}{c}}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r57026 = b;
double r57027 = -r57026;
double r57028 = r57026 * r57026;
double r57029 = 4.0;
double r57030 = a;
double r57031 = r57029 * r57030;
double r57032 = c;
double r57033 = r57031 * r57032;
double r57034 = r57028 - r57033;
double r57035 = sqrt(r57034);
double r57036 = r57027 + r57035;
double r57037 = 2.0;
double r57038 = r57037 * r57030;
double r57039 = r57036 / r57038;
return r57039;
}
double f(double a, double b, double c) {
double r57040 = b;
double r57041 = -7.603816824088264e+144;
bool r57042 = r57040 <= r57041;
double r57043 = 1.0;
double r57044 = c;
double r57045 = r57044 / r57040;
double r57046 = a;
double r57047 = r57040 / r57046;
double r57048 = r57045 - r57047;
double r57049 = r57043 * r57048;
double r57050 = -3.27314384198807e-203;
bool r57051 = r57040 <= r57050;
double r57052 = -r57040;
double r57053 = r57040 * r57040;
double r57054 = 4.0;
double r57055 = r57054 * r57046;
double r57056 = r57055 * r57044;
double r57057 = r57053 - r57056;
double r57058 = sqrt(r57057);
double r57059 = sqrt(r57058);
double r57060 = r57059 * r57059;
double r57061 = r57052 + r57060;
double r57062 = 2.0;
double r57063 = r57062 * r57046;
double r57064 = r57061 / r57063;
double r57065 = 2.1125387673008883e+122;
bool r57066 = r57040 <= r57065;
double r57067 = 1.0;
double r57068 = r57062 / r57054;
double r57069 = r57067 / r57068;
double r57070 = r57067 / r57044;
double r57071 = r57069 / r57070;
double r57072 = r57052 - r57058;
double r57073 = r57071 / r57072;
double r57074 = -1.0;
double r57075 = r57074 * r57045;
double r57076 = r57066 ? r57073 : r57075;
double r57077 = r57051 ? r57064 : r57076;
double r57078 = r57042 ? r57049 : r57077;
return r57078;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.603816824088264e+144Initial program 61.2
Taylor expanded around -inf 2.8
Simplified2.8
if -7.603816824088264e+144 < b < -3.27314384198807e-203Initial program 7.1
rmApplied add-sqr-sqrt7.1
Applied sqrt-prod7.4
if -3.27314384198807e-203 < b < 2.1125387673008883e+122Initial program 29.8
rmApplied flip-+29.9
Simplified16.2
rmApplied *-un-lft-identity16.2
Applied *-un-lft-identity16.2
Applied times-frac16.2
Applied associate-/l*16.3
Simplified15.5
rmApplied associate-/r*15.3
Simplified9.5
if 2.1125387673008883e+122 < b Initial program 61.1
Taylor expanded around inf 2.1
Final simplification6.5
herbie shell --seed 2020036 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))