\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 -2.90813916198160293963366976401570687923 \cdot 10^{62}:\\
\;\;\;\;\frac{\frac{\left(\frac{a \cdot 1.5}{\frac{b}{c}} - b\right) - b}{a}}{3}\\
\mathbf{elif}\;b \le -1.160679944395394427376937112683747781511 \cdot 10^{-265}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)} - b}{3}}{a}\\
\mathbf{elif}\;b \le 1.384078670752047991329508030364988612145 \cdot 10^{134}:\\
\;\;\;\;\frac{1}{3} \cdot \left(\frac{a}{a} \cdot \frac{3 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)}}\right)\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r95628 = b;
double r95629 = -r95628;
double r95630 = r95628 * r95628;
double r95631 = 3.0;
double r95632 = a;
double r95633 = r95631 * r95632;
double r95634 = c;
double r95635 = r95633 * r95634;
double r95636 = r95630 - r95635;
double r95637 = sqrt(r95636);
double r95638 = r95629 + r95637;
double r95639 = r95638 / r95633;
return r95639;
}
double f(double a, double b, double c) {
double r95640 = b;
double r95641 = -2.908139161981603e+62;
bool r95642 = r95640 <= r95641;
double r95643 = a;
double r95644 = 1.5;
double r95645 = r95643 * r95644;
double r95646 = c;
double r95647 = r95640 / r95646;
double r95648 = r95645 / r95647;
double r95649 = r95648 - r95640;
double r95650 = r95649 - r95640;
double r95651 = r95650 / r95643;
double r95652 = 3.0;
double r95653 = r95651 / r95652;
double r95654 = -1.1606799443953944e-265;
bool r95655 = r95640 <= r95654;
double r95656 = r95640 * r95640;
double r95657 = r95643 * r95646;
double r95658 = r95652 * r95657;
double r95659 = r95656 - r95658;
double r95660 = sqrt(r95659);
double r95661 = r95660 - r95640;
double r95662 = r95661 / r95652;
double r95663 = r95662 / r95643;
double r95664 = 1.384078670752048e+134;
bool r95665 = r95640 <= r95664;
double r95666 = 1.0;
double r95667 = r95666 / r95652;
double r95668 = r95643 / r95643;
double r95669 = r95652 * r95646;
double r95670 = -r95640;
double r95671 = r95670 - r95660;
double r95672 = r95669 / r95671;
double r95673 = r95668 * r95672;
double r95674 = r95667 * r95673;
double r95675 = -0.5;
double r95676 = r95646 / r95640;
double r95677 = r95675 * r95676;
double r95678 = r95665 ? r95674 : r95677;
double r95679 = r95655 ? r95663 : r95678;
double r95680 = r95642 ? r95653 : r95679;
return r95680;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.908139161981603e+62Initial program 40.0
Simplified40.0
Taylor expanded around -inf 10.6
Simplified5.1
if -2.908139161981603e+62 < b < -1.1606799443953944e-265Initial program 8.8
rmApplied associate-/r*8.8
Simplified8.8
if -1.1606799443953944e-265 < b < 1.384078670752048e+134Initial program 32.1
rmApplied flip-+32.2
Simplified16.6
Simplified16.6
rmApplied *-un-lft-identity16.6
Applied *-un-lft-identity16.6
Applied times-frac16.6
Applied times-frac16.6
Simplified16.6
Simplified9.5
if 1.384078670752048e+134 < b Initial program 62.0
Taylor expanded around inf 1.7
Final simplification7.0
herbie shell --seed 2019195
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))