\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 1935.0528928047481:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{\mathsf{fma}\left(c \cdot -4, a, b \cdot b\right)} \cdot \mathsf{fma}\left(c \cdot -4, a, b \cdot b\right) - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(b, \sqrt{\mathsf{fma}\left(c \cdot -4, a, b \cdot b\right)}, b \cdot b + \mathsf{fma}\left(c \cdot -4, a, b \cdot b\right)\right)}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r744624 = b;
double r744625 = -r744624;
double r744626 = r744624 * r744624;
double r744627 = 4.0;
double r744628 = a;
double r744629 = r744627 * r744628;
double r744630 = c;
double r744631 = r744629 * r744630;
double r744632 = r744626 - r744631;
double r744633 = sqrt(r744632);
double r744634 = r744625 + r744633;
double r744635 = 2.0;
double r744636 = r744635 * r744628;
double r744637 = r744634 / r744636;
return r744637;
}
double f(double a, double b, double c) {
double r744638 = b;
double r744639 = 1935.0528928047481;
bool r744640 = r744638 <= r744639;
double r744641 = c;
double r744642 = -4.0;
double r744643 = r744641 * r744642;
double r744644 = a;
double r744645 = r744638 * r744638;
double r744646 = fma(r744643, r744644, r744645);
double r744647 = sqrt(r744646);
double r744648 = r744647 * r744646;
double r744649 = r744645 * r744638;
double r744650 = r744648 - r744649;
double r744651 = r744645 + r744646;
double r744652 = fma(r744638, r744647, r744651);
double r744653 = r744650 / r744652;
double r744654 = r744653 / r744644;
double r744655 = 2.0;
double r744656 = r744654 / r744655;
double r744657 = -2.0;
double r744658 = r744641 / r744638;
double r744659 = r744657 * r744658;
double r744660 = r744659 / r744655;
double r744661 = r744640 ? r744656 : r744660;
return r744661;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 1935.0528928047481Initial program 17.3
Simplified17.3
rmApplied flip3--17.3
Simplified16.7
Simplified16.7
if 1935.0528928047481 < b Initial program 36.6
Simplified36.6
Taylor expanded around inf 16.0
Final simplification16.3
herbie shell --seed 2019156 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))