\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 -4.12310353364421125 \cdot 10^{95}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 3.446447862996811 \cdot 10^{-75}:\\
\;\;\;\;\left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b\right) \cdot \left(\frac{1}{a} \cdot \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r42121 = b;
double r42122 = -r42121;
double r42123 = r42121 * r42121;
double r42124 = 4.0;
double r42125 = a;
double r42126 = r42124 * r42125;
double r42127 = c;
double r42128 = r42126 * r42127;
double r42129 = r42123 - r42128;
double r42130 = sqrt(r42129);
double r42131 = r42122 + r42130;
double r42132 = 2.0;
double r42133 = r42132 * r42125;
double r42134 = r42131 / r42133;
return r42134;
}
double f(double a, double b, double c) {
double r42135 = b;
double r42136 = -4.123103533644211e+95;
bool r42137 = r42135 <= r42136;
double r42138 = 1.0;
double r42139 = c;
double r42140 = r42139 / r42135;
double r42141 = a;
double r42142 = r42135 / r42141;
double r42143 = r42140 - r42142;
double r42144 = r42138 * r42143;
double r42145 = 3.446447862996811e-75;
bool r42146 = r42135 <= r42145;
double r42147 = r42135 * r42135;
double r42148 = 4.0;
double r42149 = r42148 * r42141;
double r42150 = r42149 * r42139;
double r42151 = r42147 - r42150;
double r42152 = sqrt(r42151);
double r42153 = r42152 - r42135;
double r42154 = 1.0;
double r42155 = r42154 / r42141;
double r42156 = 2.0;
double r42157 = r42154 / r42156;
double r42158 = r42155 * r42157;
double r42159 = r42153 * r42158;
double r42160 = -1.0;
double r42161 = r42160 * r42140;
double r42162 = r42146 ? r42159 : r42161;
double r42163 = r42137 ? r42144 : r42162;
return r42163;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.123103533644211e+95Initial program 47.3
Simplified47.3
Taylor expanded around -inf 3.8
Simplified3.8
if -4.123103533644211e+95 < b < 3.446447862996811e-75Initial program 13.3
Simplified13.3
rmApplied *-un-lft-identity13.3
Applied *-un-lft-identity13.3
Applied times-frac13.3
Applied associate-/l*13.4
rmApplied div-inv13.4
Applied *-un-lft-identity13.4
Applied times-frac13.5
Applied add-cube-cbrt13.5
Applied times-frac13.5
Simplified13.4
Simplified13.4
if 3.446447862996811e-75 < b Initial program 52.5
Simplified52.5
Taylor expanded around inf 9.7
Final simplification10.4
herbie shell --seed 2020042
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))