double f(double a, double b, double c) {
double r1259640 = b;
double r1259641 = 0.0;
bool r1259642 = r1259640 >= r1259641;
double r1259643 = 2.0;
double r1259644 = c;
double r1259645 = r1259643 * r1259644;
double r1259646 = -r1259640;
double r1259647 = r1259640 * r1259640;
double r1259648 = 4.0;
double r1259649 = a;
double r1259650 = r1259648 * r1259649;
double r1259651 = r1259650 * r1259644;
double r1259652 = r1259647 - r1259651;
double r1259653 = sqrt(r1259652);
double r1259654 = r1259646 - r1259653;
double r1259655 = r1259645 / r1259654;
double r1259656 = r1259646 + r1259653;
double r1259657 = r1259643 * r1259649;
double r1259658 = r1259656 / r1259657;
double r1259659 = r1259642 ? r1259655 : r1259658;
return r1259659;
}
double f(double a, double b, double c) {
double r1259660 = b;
double r1259661 = -1.580935596201618e+104;
bool r1259662 = r1259660 <= r1259661;
double r1259663 = 0.0;
bool r1259664 = r1259660 >= r1259663;
double r1259665 = 2.0;
double r1259666 = c;
double r1259667 = r1259665 * r1259666;
double r1259668 = -r1259660;
double r1259669 = r1259660 * r1259660;
double r1259670 = 4.0;
double r1259671 = a;
double r1259672 = r1259670 * r1259671;
double r1259673 = r1259672 * r1259666;
double r1259674 = r1259669 - r1259673;
double r1259675 = sqrt(r1259674);
double r1259676 = r1259668 - r1259675;
double r1259677 = r1259667 / r1259676;
double r1259678 = r1259660 / r1259671;
double r1259679 = r1259667 / r1259678;
double r1259680 = r1259679 - r1259660;
double r1259681 = r1259680 + r1259668;
double r1259682 = r1259665 * r1259671;
double r1259683 = r1259681 / r1259682;
double r1259684 = r1259664 ? r1259677 : r1259683;
double r1259685 = 1.4515572961666691e+107;
bool r1259686 = r1259660 <= r1259685;
double r1259687 = cbrt(r1259674);
double r1259688 = sqrt(r1259687);
double r1259689 = fabs(r1259687);
double r1259690 = r1259688 * r1259689;
double r1259691 = r1259690 + r1259668;
double r1259692 = r1259691 / r1259682;
double r1259693 = r1259664 ? r1259677 : r1259692;
double r1259694 = r1259671 * r1259666;
double r1259695 = r1259694 / r1259660;
double r1259696 = r1259695 * r1259665;
double r1259697 = r1259660 - r1259696;
double r1259698 = r1259668 - r1259697;
double r1259699 = r1259667 / r1259698;
double r1259700 = r1259675 + r1259668;
double r1259701 = r1259700 / r1259682;
double r1259702 = r1259664 ? r1259699 : r1259701;
double r1259703 = r1259686 ? r1259693 : r1259702;
double r1259704 = r1259662 ? r1259684 : r1259703;
return r1259704;
}
\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 -1.580935596201618 \cdot 10^{+104}:\\
\;\;\;\;\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(\frac{2 \cdot c}{\frac{b}{a}} - b\right) + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.4515572961666691 \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{\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - \frac{a \cdot c}{b} \cdot 2\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}


Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.580935596201618e+104Initial program 45.4
Taylor expanded around -inf 10.3
Simplified4.0
if -1.580935596201618e+104 < b < 1.4515572961666691e+107Initial program 9.1
rmApplied add-cube-cbrt9.3
Applied sqrt-prod9.3
Simplified9.3
if 1.4515572961666691e+107 < b Initial program 31.4
Taylor expanded around inf 6.5
Final simplification7.8
herbie shell --seed 2019102
(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))))