\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 563.9094021205955:\\
\;\;\;\;\frac{\frac{\frac{\mathsf{fma}\left(\left(\left(b \cdot b\right) \cdot \left(b \cdot b\right)\right) \cdot \left(b \cdot b\right), \mathsf{fma}\left(a \cdot c, -3, b \cdot b\right) \cdot \sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}, \left(-b\right) \cdot \left(\left(\left(\left(b \cdot b\right) \cdot \left(b \cdot b\right)\right) \cdot \left(b \cdot b\right)\right) \cdot \left(b \cdot b\right)\right)\right)}{\mathsf{fma}\left(b \cdot b, \mathsf{fma}\left(a \cdot c, -3, b \cdot b\right) \cdot \left(b \cdot b\right), \left(b \cdot \left(b \cdot b\right)\right) \cdot \mathsf{fma}\left(b \cdot b, \sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}, b \cdot \left(b \cdot b\right)\right)\right)} + \left(\left(a \cdot c\right) \cdot -3\right) \cdot \sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}}{\mathsf{fma}\left(\sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}, b, b \cdot b + \mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)\right)}}{a \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{\mathsf{fma}\left(a, \left(c \cdot b\right) \cdot \frac{-3}{2}, \left(\left(a \cdot c\right) \cdot \sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}\right) \cdot -3\right)}{3}}{\mathsf{fma}\left(\sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}, b, b \cdot b + \mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)\right)}}{a}\\
\end{array}double f(double a, double b, double c) {
double r3950940 = b;
double r3950941 = -r3950940;
double r3950942 = r3950940 * r3950940;
double r3950943 = 3.0;
double r3950944 = a;
double r3950945 = r3950943 * r3950944;
double r3950946 = c;
double r3950947 = r3950945 * r3950946;
double r3950948 = r3950942 - r3950947;
double r3950949 = sqrt(r3950948);
double r3950950 = r3950941 + r3950949;
double r3950951 = r3950950 / r3950945;
return r3950951;
}
double f(double a, double b, double c) {
double r3950952 = b;
double r3950953 = 563.9094021205955;
bool r3950954 = r3950952 <= r3950953;
double r3950955 = r3950952 * r3950952;
double r3950956 = r3950955 * r3950955;
double r3950957 = r3950956 * r3950955;
double r3950958 = a;
double r3950959 = c;
double r3950960 = r3950958 * r3950959;
double r3950961 = -3.0;
double r3950962 = fma(r3950960, r3950961, r3950955);
double r3950963 = sqrt(r3950962);
double r3950964 = r3950962 * r3950963;
double r3950965 = -r3950952;
double r3950966 = r3950957 * r3950955;
double r3950967 = r3950965 * r3950966;
double r3950968 = fma(r3950957, r3950964, r3950967);
double r3950969 = r3950962 * r3950955;
double r3950970 = r3950952 * r3950955;
double r3950971 = fma(r3950955, r3950963, r3950970);
double r3950972 = r3950970 * r3950971;
double r3950973 = fma(r3950955, r3950969, r3950972);
double r3950974 = r3950968 / r3950973;
double r3950975 = r3950960 * r3950961;
double r3950976 = r3950975 * r3950963;
double r3950977 = r3950974 + r3950976;
double r3950978 = r3950955 + r3950962;
double r3950979 = fma(r3950963, r3950952, r3950978);
double r3950980 = r3950977 / r3950979;
double r3950981 = 3.0;
double r3950982 = r3950958 * r3950981;
double r3950983 = r3950980 / r3950982;
double r3950984 = r3950959 * r3950952;
double r3950985 = -1.5;
double r3950986 = r3950984 * r3950985;
double r3950987 = r3950960 * r3950963;
double r3950988 = r3950987 * r3950961;
double r3950989 = fma(r3950958, r3950986, r3950988);
double r3950990 = r3950989 / r3950981;
double r3950991 = r3950990 / r3950979;
double r3950992 = r3950991 / r3950958;
double r3950993 = r3950954 ? r3950983 : r3950992;
return r3950993;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 563.9094021205955Initial program 16.8
Simplified16.8
rmApplied flip3--16.8
Simplified16.1
Simplified16.1
rmApplied fma-udef16.1
Applied distribute-rgt-in16.0
Applied associate--l+15.7
rmApplied flip3--15.7
Simplified14.8
Simplified14.8
if 563.9094021205955 < b Initial program 36.3
Simplified36.3
rmApplied flip3--36.4
Simplified35.7
Simplified35.7
rmApplied fma-udef35.7
Applied distribute-rgt-in35.6
Applied associate--l+32.8
Taylor expanded around inf 15.4
rmApplied associate-/r*15.4
Simplified15.3
Final simplification15.1
herbie shell --seed 2019163 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, narrow range"
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))