\begin{array}{l}
\mathbf{if}\;b \ge 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 -4.427569081900357 \cdot 10^{+107}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\left(\left(\frac{a}{\frac{b}{c}}\right)\right) - b\right) \cdot 2}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 4.69567004969582 \cdot 10^{+149}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 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{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{c}{\frac{b}{a}} - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r602569 = b;
double r602570 = 0.0;
bool r602571 = r602569 >= r602570;
double r602572 = 2.0;
double r602573 = c;
double r602574 = r602572 * r602573;
double r602575 = -r602569;
double r602576 = r602569 * r602569;
double r602577 = 4.0;
double r602578 = a;
double r602579 = r602577 * r602578;
double r602580 = r602579 * r602573;
double r602581 = r602576 - r602580;
double r602582 = sqrt(r602581);
double r602583 = r602575 - r602582;
double r602584 = r602574 / r602583;
double r602585 = r602575 + r602582;
double r602586 = r602572 * r602578;
double r602587 = r602585 / r602586;
double r602588 = r602571 ? r602584 : r602587;
return r602588;
}
double f(double a, double b, double c) {
double r602589 = b;
double r602590 = -4.427569081900357e+107;
bool r602591 = r602589 <= r602590;
double r602592 = 0.0;
bool r602593 = r602589 >= r602592;
double r602594 = 2.0;
double r602595 = c;
double r602596 = r602594 * r602595;
double r602597 = -r602589;
double r602598 = r602589 * r602589;
double r602599 = 4.0;
double r602600 = a;
double r602601 = r602599 * r602600;
double r602602 = r602601 * r602595;
double r602603 = r602598 - r602602;
double r602604 = sqrt(r602603);
double r602605 = r602597 - r602604;
double r602606 = r602596 / r602605;
double r602607 = r602589 / r602595;
double r602608 = r602600 / r602607;
double r602609 = /* ERROR: no posit support in C */;
double r602610 = /* ERROR: no posit support in C */;
double r602611 = r602610 - r602589;
double r602612 = r602611 * r602594;
double r602613 = r602594 * r602600;
double r602614 = r602612 / r602613;
double r602615 = r602593 ? r602606 : r602614;
double r602616 = 4.69567004969582e+149;
bool r602617 = r602589 <= r602616;
double r602618 = cbrt(r602603);
double r602619 = r602618 * r602618;
double r602620 = sqrt(r602619);
double r602621 = sqrt(r602618);
double r602622 = r602620 * r602621;
double r602623 = r602597 + r602622;
double r602624 = r602623 / r602613;
double r602625 = r602593 ? r602606 : r602624;
double r602626 = r602589 / r602600;
double r602627 = r602595 / r602626;
double r602628 = r602627 - r602589;
double r602629 = r602594 * r602628;
double r602630 = r602596 / r602629;
double r602631 = r602595 / r602589;
double r602632 = r602631 - r602626;
double r602633 = r602593 ? r602630 : r602632;
double r602634 = r602617 ? r602625 : r602633;
double r602635 = r602591 ? r602615 : r602634;
return r602635;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -4.427569081900357e+107Initial program 46.7
Taylor expanded around -inf 9.4
Simplified3.1
rmApplied insert-posit163.2
if -4.427569081900357e+107 < b < 4.69567004969582e+149Initial program 8.8
rmApplied add-cube-cbrt9.0
Applied sqrt-prod9.0
if 4.69567004969582e+149 < b Initial program 39.5
Taylor expanded around -inf 39.5
Simplified39.5
Taylor expanded around inf 39.5
Taylor expanded around inf 7.2
Simplified1.6
Final simplification6.8
herbie shell --seed 2019139
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))