\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -1.350676057343211554491874986591947593393 \cdot 10^{154}:\\
\;\;\;\;\frac{\left(-b\right) + \left(\frac{3}{2} \cdot \frac{a \cdot c}{b} - b\right)}{3 \cdot a}\\
\mathbf{elif}\;b \le \frac{5607323487753163}{4.167509020549908921299907369200786123215 \cdot 10^{239}}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\\
\mathbf{elif}\;b \le 2.18011016373875351152746530015048116319 \cdot 10^{139}:\\
\;\;\;\;\frac{1}{\frac{3 \cdot a}{3 \cdot \left(a \cdot c\right)} \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-3}{2} \cdot \frac{a \cdot c}{b}}{3 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r97682 = b;
double r97683 = -r97682;
double r97684 = r97682 * r97682;
double r97685 = 3.0;
double r97686 = a;
double r97687 = r97685 * r97686;
double r97688 = c;
double r97689 = r97687 * r97688;
double r97690 = r97684 - r97689;
double r97691 = sqrt(r97690);
double r97692 = r97683 + r97691;
double r97693 = r97692 / r97687;
return r97693;
}
double f(double a, double b, double c) {
double r97694 = b;
double r97695 = -1.3506760573432116e+154;
bool r97696 = r97694 <= r97695;
double r97697 = -r97694;
double r97698 = 3.0;
double r97699 = 2.0;
double r97700 = r97698 / r97699;
double r97701 = a;
double r97702 = c;
double r97703 = r97701 * r97702;
double r97704 = r97703 / r97694;
double r97705 = r97700 * r97704;
double r97706 = r97705 - r97694;
double r97707 = r97697 + r97706;
double r97708 = r97698 * r97701;
double r97709 = r97707 / r97708;
double r97710 = 5607323487753163.0;
double r97711 = 4.167509020549909e+239;
double r97712 = r97710 / r97711;
bool r97713 = r97694 <= r97712;
double r97714 = r97694 * r97694;
double r97715 = r97708 * r97702;
double r97716 = r97714 - r97715;
double r97717 = sqrt(r97716);
double r97718 = r97697 + r97717;
double r97719 = r97718 / r97708;
double r97720 = 2.1801101637387535e+139;
bool r97721 = r97694 <= r97720;
double r97722 = 1.0;
double r97723 = r97698 * r97703;
double r97724 = r97708 / r97723;
double r97725 = r97697 - r97717;
double r97726 = r97724 * r97725;
double r97727 = r97722 / r97726;
double r97728 = -3.0;
double r97729 = r97728 / r97699;
double r97730 = r97729 * r97704;
double r97731 = r97730 / r97708;
double r97732 = r97721 ? r97727 : r97731;
double r97733 = r97713 ? r97719 : r97732;
double r97734 = r97696 ? r97709 : r97733;
return r97734;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3506760573432116e+154Initial program 64.0
Taylor expanded around -inf 12.0
Simplified12.0
if -1.3506760573432116e+154 < b < 1.345485627050489e-224Initial program 9.4
if 1.345485627050489e-224 < b < 2.1801101637387535e+139Initial program 36.9
rmApplied flip-+37.0
Simplified16.1
rmApplied *-un-lft-identity16.1
Applied *-un-lft-identity16.1
Applied times-frac16.1
Applied associate-/l*16.4
Simplified14.6
if 2.1801101637387535e+139 < b Initial program 62.4
Taylor expanded around inf 15.3
Simplified15.3
Final simplification12.4
herbie shell --seed 2019303
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))