\begin{array}{l}
\mathbf{if}\;b \ge 0.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 -5.738180479687524379069024322817742160506 \cdot 10^{54}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\frac{a \cdot c}{b}, 2, b \cdot -2\right)}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \le 8.13128291297911797546814361239497721035 \cdot 10^{93}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r38822 = b;
double r38823 = 0.0;
bool r38824 = r38822 >= r38823;
double r38825 = 2.0;
double r38826 = c;
double r38827 = r38825 * r38826;
double r38828 = -r38822;
double r38829 = r38822 * r38822;
double r38830 = 4.0;
double r38831 = a;
double r38832 = r38830 * r38831;
double r38833 = r38832 * r38826;
double r38834 = r38829 - r38833;
double r38835 = sqrt(r38834);
double r38836 = r38828 - r38835;
double r38837 = r38827 / r38836;
double r38838 = r38828 + r38835;
double r38839 = r38825 * r38831;
double r38840 = r38838 / r38839;
double r38841 = r38824 ? r38837 : r38840;
return r38841;
}
double f(double a, double b, double c) {
double r38842 = b;
double r38843 = -5.7381804796875244e+54;
bool r38844 = r38842 <= r38843;
double r38845 = 0.0;
bool r38846 = r38842 >= r38845;
double r38847 = 2.0;
double r38848 = c;
double r38849 = r38847 * r38848;
double r38850 = -r38842;
double r38851 = r38842 * r38842;
double r38852 = 4.0;
double r38853 = a;
double r38854 = r38852 * r38853;
double r38855 = r38854 * r38848;
double r38856 = r38851 - r38855;
double r38857 = sqrt(r38856);
double r38858 = r38850 - r38857;
double r38859 = r38849 / r38858;
double r38860 = r38853 * r38848;
double r38861 = r38860 / r38842;
double r38862 = -2.0;
double r38863 = r38842 * r38862;
double r38864 = fma(r38861, r38847, r38863);
double r38865 = r38864 / r38847;
double r38866 = r38865 / r38853;
double r38867 = r38846 ? r38859 : r38866;
double r38868 = 8.131282912979118e+93;
bool r38869 = r38842 <= r38868;
double r38870 = r38857 - r38842;
double r38871 = sqrt(r38870);
double r38872 = r38871 * r38871;
double r38873 = r38872 / r38847;
double r38874 = r38873 / r38853;
double r38875 = r38846 ? r38859 : r38874;
double r38876 = r38847 * r38861;
double r38877 = r38842 - r38876;
double r38878 = r38850 - r38877;
double r38879 = r38849 / r38878;
double r38880 = r38870 / r38847;
double r38881 = r38880 / r38853;
double r38882 = r38846 ? r38879 : r38881;
double r38883 = r38869 ? r38875 : r38882;
double r38884 = r38844 ? r38867 : r38883;
return r38884;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -5.7381804796875244e+54Initial program 38.2
Simplified38.2
Taylor expanded around -inf 10.6
Simplified10.6
if -5.7381804796875244e+54 < b < 8.131282912979118e+93Initial program 8.8
Simplified8.8
rmApplied add-sqr-sqrt8.9
if 8.131282912979118e+93 < b Initial program 29.5
Simplified29.5
Taylor expanded around inf 6.7
Final simplification8.7
herbie shell --seed 2019350 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))