\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 -3.539544285799822 \cdot 10^{+127}:\\
\;\;\;\;\frac{\left(\frac{1}{2} \cdot \left(\left(\left(\left(c \cdot \sqrt[3]{-3}\right) \cdot \left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right)\right) \cdot \sqrt[3]{-1}\right) \cdot \frac{a}{b}\right) - b\right) + \left(-b\right)}{a \cdot 3}\\
\mathbf{elif}\;b \le 6.134174794339903 \cdot 10^{-27}:\\
\;\;\;\;\frac{\mathsf{fma}\left(-\sqrt[3]{b} \cdot \sqrt[3]{b}, \sqrt[3]{b}, \sqrt{b \cdot b - c \cdot \left(a \cdot 3\right)}\right)}{a \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-3}{2} \cdot \frac{c \cdot a}{b}}{a \cdot 3}\\
\end{array}double f(double a, double b, double c) {
double r2441646 = b;
double r2441647 = -r2441646;
double r2441648 = r2441646 * r2441646;
double r2441649 = 3.0;
double r2441650 = a;
double r2441651 = r2441649 * r2441650;
double r2441652 = c;
double r2441653 = r2441651 * r2441652;
double r2441654 = r2441648 - r2441653;
double r2441655 = sqrt(r2441654);
double r2441656 = r2441647 + r2441655;
double r2441657 = r2441656 / r2441651;
return r2441657;
}
double f(double a, double b, double c) {
double r2441658 = b;
double r2441659 = -3.539544285799822e+127;
bool r2441660 = r2441658 <= r2441659;
double r2441661 = 0.5;
double r2441662 = c;
double r2441663 = -3.0;
double r2441664 = cbrt(r2441663);
double r2441665 = r2441662 * r2441664;
double r2441666 = 3.0;
double r2441667 = cbrt(r2441666);
double r2441668 = r2441667 * r2441667;
double r2441669 = r2441665 * r2441668;
double r2441670 = -1.0;
double r2441671 = cbrt(r2441670);
double r2441672 = r2441669 * r2441671;
double r2441673 = a;
double r2441674 = r2441673 / r2441658;
double r2441675 = r2441672 * r2441674;
double r2441676 = r2441661 * r2441675;
double r2441677 = r2441676 - r2441658;
double r2441678 = -r2441658;
double r2441679 = r2441677 + r2441678;
double r2441680 = r2441673 * r2441666;
double r2441681 = r2441679 / r2441680;
double r2441682 = 6.134174794339903e-27;
bool r2441683 = r2441658 <= r2441682;
double r2441684 = cbrt(r2441658);
double r2441685 = r2441684 * r2441684;
double r2441686 = -r2441685;
double r2441687 = r2441658 * r2441658;
double r2441688 = r2441662 * r2441680;
double r2441689 = r2441687 - r2441688;
double r2441690 = sqrt(r2441689);
double r2441691 = fma(r2441686, r2441684, r2441690);
double r2441692 = r2441691 / r2441680;
double r2441693 = -1.5;
double r2441694 = r2441662 * r2441673;
double r2441695 = r2441694 / r2441658;
double r2441696 = r2441693 * r2441695;
double r2441697 = r2441696 / r2441680;
double r2441698 = r2441683 ? r2441692 : r2441697;
double r2441699 = r2441660 ? r2441681 : r2441698;
return r2441699;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -3.539544285799822e+127Initial program 51.7
rmApplied add-cube-cbrt51.7
rmApplied cbrt-prod51.7
Taylor expanded around -inf 8.8
Simplified2.7
if -3.539544285799822e+127 < b < 6.134174794339903e-27Initial program 14.5
rmApplied add-cube-cbrt14.7
Applied distribute-lft-neg-in14.7
Applied fma-def14.7
if 6.134174794339903e-27 < b Initial program 53.7
Taylor expanded around inf 17.7
Final simplification14.2
herbie shell --seed 2019153 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))