\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 -1.4755018087753095 \cdot 10^{+152}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt[3]{\sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)} \cdot \left(b \cdot b - c \cdot \left(a \cdot 4\right)\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{2 \cdot \left(\frac{a}{\frac{b}{c}} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le -1.1253904323982412 \cdot 10^{-267}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\frac{c \cdot \left(a \cdot 4\right) + \left(b \cdot b - b \cdot b\right)}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)}}\\
\end{array}\\
\mathbf{elif}\;b \le 3.340270116328134 \cdot 10^{+83}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;e^{\log \left(\frac{c}{\frac{a}{b} \cdot c - b}\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot \left(\frac{a}{\frac{b}{c}} - b\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{2 \cdot \left(\frac{a}{\frac{b}{c}} - b\right)}\\
\end{array}double f(double a, double b, double c) {
double r714610 = b;
double r714611 = 0.0;
bool r714612 = r714610 >= r714611;
double r714613 = -r714610;
double r714614 = r714610 * r714610;
double r714615 = 4.0;
double r714616 = a;
double r714617 = r714615 * r714616;
double r714618 = c;
double r714619 = r714617 * r714618;
double r714620 = r714614 - r714619;
double r714621 = sqrt(r714620);
double r714622 = r714613 - r714621;
double r714623 = 2.0;
double r714624 = r714623 * r714616;
double r714625 = r714622 / r714624;
double r714626 = r714623 * r714618;
double r714627 = r714613 + r714621;
double r714628 = r714626 / r714627;
double r714629 = r714612 ? r714625 : r714628;
return r714629;
}
double f(double a, double b, double c) {
double r714630 = b;
double r714631 = -1.4755018087753095e+152;
bool r714632 = r714630 <= r714631;
double r714633 = 0.0;
bool r714634 = r714630 >= r714633;
double r714635 = -r714630;
double r714636 = r714630 * r714630;
double r714637 = c;
double r714638 = a;
double r714639 = 4.0;
double r714640 = r714638 * r714639;
double r714641 = r714637 * r714640;
double r714642 = r714636 - r714641;
double r714643 = sqrt(r714642);
double r714644 = r714643 * r714642;
double r714645 = cbrt(r714644);
double r714646 = r714635 - r714645;
double r714647 = 2.0;
double r714648 = r714647 * r714638;
double r714649 = r714646 / r714648;
double r714650 = r714637 * r714647;
double r714651 = r714630 / r714637;
double r714652 = r714638 / r714651;
double r714653 = r714652 - r714630;
double r714654 = r714647 * r714653;
double r714655 = r714650 / r714654;
double r714656 = r714634 ? r714649 : r714655;
double r714657 = -1.1253904323982412e-267;
bool r714658 = r714630 <= r714657;
double r714659 = r714636 - r714636;
double r714660 = r714641 + r714659;
double r714661 = r714635 + r714643;
double r714662 = r714660 / r714661;
double r714663 = r714662 / r714648;
double r714664 = r714650 / r714661;
double r714665 = r714634 ? r714663 : r714664;
double r714666 = 3.340270116328134e+83;
bool r714667 = r714630 <= r714666;
double r714668 = r714635 - r714643;
double r714669 = r714668 / r714648;
double r714670 = r714638 / r714630;
double r714671 = r714670 * r714637;
double r714672 = r714671 - r714630;
double r714673 = r714637 / r714672;
double r714674 = log(r714673);
double r714675 = exp(r714674);
double r714676 = r714634 ? r714669 : r714675;
double r714677 = r714654 / r714648;
double r714678 = r714634 ? r714677 : r714655;
double r714679 = r714667 ? r714676 : r714678;
double r714680 = r714658 ? r714665 : r714679;
double r714681 = r714632 ? r714656 : r714680;
return r714681;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.4755018087753095e+152Initial program 36.6
Taylor expanded around -inf 6.2
Simplified1.7
rmApplied add-cbrt-cube1.7
Simplified1.7
if -1.4755018087753095e+152 < b < -1.1253904323982412e-267Initial program 7.1
rmApplied flip--7.1
Simplified7.1
if -1.1253904323982412e-267 < b < 3.340270116328134e+83Initial program 9.0
Taylor expanded around -inf 12.4
Simplified12.4
rmApplied add-exp-log12.4
Applied add-exp-log12.4
Applied prod-exp12.4
Applied add-exp-log12.5
Applied add-exp-log12.5
Applied prod-exp12.5
Applied div-exp12.5
Simplified12.4
if 3.340270116328134e+83 < b Initial program 42.6
Taylor expanded around -inf 42.6
Simplified42.6
Taylor expanded around inf 10.5
Simplified3.9
Final simplification7.3
herbie shell --seed 2019156
(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)))))))