\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 -2.3044033969831823 \cdot 10^{153}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 8.9305277508569929 \cdot 10^{-82}:\\
\;\;\;\;\frac{b - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{-2 \cdot a}\\
\mathbf{elif}\;b \le 4.01993084419163312 \cdot 10^{109}:\\
\;\;\;\;\frac{\frac{1}{\sqrt[3]{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}{\frac{2 \cdot a}{4 \cdot \left(a \cdot c\right)} \cdot \sqrt[3]{\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 r55643 = b;
double r55644 = -r55643;
double r55645 = r55643 * r55643;
double r55646 = 4.0;
double r55647 = a;
double r55648 = r55646 * r55647;
double r55649 = c;
double r55650 = r55648 * r55649;
double r55651 = r55645 - r55650;
double r55652 = sqrt(r55651);
double r55653 = r55644 + r55652;
double r55654 = 2.0;
double r55655 = r55654 * r55647;
double r55656 = r55653 / r55655;
return r55656;
}
double f(double a, double b, double c) {
double r55657 = b;
double r55658 = -2.3044033969831823e+153;
bool r55659 = r55657 <= r55658;
double r55660 = 1.0;
double r55661 = c;
double r55662 = r55661 / r55657;
double r55663 = a;
double r55664 = r55657 / r55663;
double r55665 = r55662 - r55664;
double r55666 = r55660 * r55665;
double r55667 = 8.930527750856993e-82;
bool r55668 = r55657 <= r55667;
double r55669 = r55657 * r55657;
double r55670 = 4.0;
double r55671 = r55670 * r55663;
double r55672 = r55671 * r55661;
double r55673 = r55669 - r55672;
double r55674 = sqrt(r55673);
double r55675 = r55657 - r55674;
double r55676 = 2.0;
double r55677 = r55676 * r55663;
double r55678 = -r55677;
double r55679 = r55675 / r55678;
double r55680 = 4.019930844191633e+109;
bool r55681 = r55657 <= r55680;
double r55682 = 1.0;
double r55683 = -r55657;
double r55684 = r55683 - r55674;
double r55685 = cbrt(r55684);
double r55686 = r55685 * r55685;
double r55687 = r55682 / r55686;
double r55688 = r55663 * r55661;
double r55689 = r55670 * r55688;
double r55690 = r55677 / r55689;
double r55691 = r55690 * r55685;
double r55692 = r55687 / r55691;
double r55693 = -1.0;
double r55694 = r55693 * r55662;
double r55695 = r55681 ? r55692 : r55694;
double r55696 = r55668 ? r55679 : r55695;
double r55697 = r55659 ? r55666 : r55696;
return r55697;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.3044033969831823e+153Initial program 63.5
Taylor expanded around -inf 2.0
Simplified2.0
if -2.3044033969831823e+153 < b < 8.930527750856993e-82Initial program 12.5
rmApplied frac-2neg12.5
Simplified12.5
if 8.930527750856993e-82 < b < 4.019930844191633e+109Initial program 43.0
rmApplied flip-+43.0
Simplified14.9
rmApplied add-cube-cbrt15.6
Applied *-un-lft-identity15.6
Applied times-frac15.6
Applied associate-/l*14.3
Simplified13.8
if 4.019930844191633e+109 < b Initial program 59.9
Taylor expanded around inf 2.4
Final simplification9.3
herbie shell --seed 2020060 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))