\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -5.155933750194025 \cdot 10^{+21}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(\left(\left(c \cdot \frac{a}{b}\right)\right) - b\right) \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \le 2.9270846490810628 \cdot 10^{+66}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)} \cdot \left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{2 \cdot \left(c \cdot \frac{a}{b} - b\right)}\\
\end{array}double f(double a, double b, double c) {
double r1176690 = b;
double r1176691 = 0.0;
bool r1176692 = r1176690 >= r1176691;
double r1176693 = -r1176690;
double r1176694 = r1176690 * r1176690;
double r1176695 = 4.0;
double r1176696 = a;
double r1176697 = r1176695 * r1176696;
double r1176698 = c;
double r1176699 = r1176697 * r1176698;
double r1176700 = r1176694 - r1176699;
double r1176701 = sqrt(r1176700);
double r1176702 = r1176693 - r1176701;
double r1176703 = 2.0;
double r1176704 = r1176703 * r1176696;
double r1176705 = r1176702 / r1176704;
double r1176706 = r1176703 * r1176698;
double r1176707 = r1176693 + r1176701;
double r1176708 = r1176706 / r1176707;
double r1176709 = r1176692 ? r1176705 : r1176708;
return r1176709;
}
double f(double a, double b, double c) {
double r1176710 = b;
double r1176711 = -5.155933750194025e+21;
bool r1176712 = r1176710 <= r1176711;
double r1176713 = 0.0;
bool r1176714 = r1176710 >= r1176713;
double r1176715 = -r1176710;
double r1176716 = r1176710 * r1176710;
double r1176717 = 4.0;
double r1176718 = a;
double r1176719 = r1176717 * r1176718;
double r1176720 = c;
double r1176721 = r1176719 * r1176720;
double r1176722 = r1176716 - r1176721;
double r1176723 = sqrt(r1176722);
double r1176724 = r1176715 - r1176723;
double r1176725 = 2.0;
double r1176726 = r1176725 * r1176718;
double r1176727 = r1176724 / r1176726;
double r1176728 = r1176720 * r1176725;
double r1176729 = r1176718 / r1176710;
double r1176730 = r1176720 * r1176729;
double r1176731 = /* ERROR: no posit support in C */;
double r1176732 = /* ERROR: no posit support in C */;
double r1176733 = r1176732 - r1176710;
double r1176734 = r1176733 * r1176725;
double r1176735 = r1176728 / r1176734;
double r1176736 = r1176714 ? r1176727 : r1176735;
double r1176737 = 2.9270846490810628e+66;
bool r1176738 = r1176710 <= r1176737;
double r1176739 = r1176723 + r1176715;
double r1176740 = cbrt(r1176739);
double r1176741 = r1176740 * r1176740;
double r1176742 = r1176740 * r1176741;
double r1176743 = r1176728 / r1176742;
double r1176744 = r1176714 ? r1176727 : r1176743;
double r1176745 = r1176720 / r1176710;
double r1176746 = r1176710 / r1176718;
double r1176747 = r1176745 - r1176746;
double r1176748 = r1176730 - r1176710;
double r1176749 = r1176725 * r1176748;
double r1176750 = r1176728 / r1176749;
double r1176751 = r1176714 ? r1176747 : r1176750;
double r1176752 = r1176738 ? r1176744 : r1176751;
double r1176753 = r1176712 ? r1176736 : r1176752;
return r1176753;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -5.155933750194025e+21Initial program 23.9
Taylor expanded around -inf 7.5
Simplified4.6
rmApplied insert-posit164.8
if -5.155933750194025e+21 < b < 2.9270846490810628e+66Initial program 9.4
rmApplied add-cube-cbrt9.8
if 2.9270846490810628e+66 < b Initial program 38.5
Taylor expanded around -inf 38.5
Simplified38.5
Taylor expanded around inf 11.2
Simplified11.2
Taylor expanded around 0 5.8
Final simplification7.5
herbie shell --seed 2019146
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))