\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 17.714642954298647:\\
\;\;\;\;\frac{\frac{b \cdot b - \mathsf{fma}\left(b, b, c \cdot \left(3 \cdot a\right)\right)}{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} + b}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{\sqrt{3}}{a} \cdot \sqrt{a}} \cdot \frac{-1.5}{\frac{\sqrt{3}}{\frac{\frac{c}{b}}{\sqrt{a}}}}\\
\end{array}double f(double a, double b, double c) {
double r145986 = b;
double r145987 = -r145986;
double r145988 = r145986 * r145986;
double r145989 = 3.0;
double r145990 = a;
double r145991 = r145989 * r145990;
double r145992 = c;
double r145993 = r145991 * r145992;
double r145994 = r145988 - r145993;
double r145995 = sqrt(r145994);
double r145996 = r145987 + r145995;
double r145997 = r145996 / r145991;
return r145997;
}
double f(double a, double b, double c) {
double r145998 = b;
double r145999 = 17.714642954298647;
bool r146000 = r145998 <= r145999;
double r146001 = r145998 * r145998;
double r146002 = c;
double r146003 = 3.0;
double r146004 = a;
double r146005 = r146003 * r146004;
double r146006 = r146002 * r146005;
double r146007 = fma(r145998, r145998, r146006);
double r146008 = r146001 - r146007;
double r146009 = r146005 * r146002;
double r146010 = r146001 - r146009;
double r146011 = sqrt(r146010);
double r146012 = r146011 + r145998;
double r146013 = r146008 / r146012;
double r146014 = r146013 / r146005;
double r146015 = 1.0;
double r146016 = sqrt(r146003);
double r146017 = r146016 / r146004;
double r146018 = sqrt(r146004);
double r146019 = r146017 * r146018;
double r146020 = r146015 / r146019;
double r146021 = -1.5;
double r146022 = r146002 / r145998;
double r146023 = r146022 / r146018;
double r146024 = r146016 / r146023;
double r146025 = r146021 / r146024;
double r146026 = r146020 * r146025;
double r146027 = r146000 ? r146014 : r146026;
return r146027;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 17.714642954298647Initial program 14.0
Simplified14.0
rmApplied flip--14.0
Simplified13.4
if 17.714642954298647 < b Initial program 33.6
Simplified33.6
Taylor expanded around inf 18.5
rmApplied associate-/l*18.5
Simplified18.5
rmApplied add-sqr-sqrt18.5
Applied *-un-lft-identity18.5
Applied times-frac18.5
Applied times-frac18.5
Applied add-sqr-sqrt18.6
Applied times-frac18.5
Applied *-un-lft-identity18.5
Applied times-frac18.6
Simplified18.5
Final simplification17.3
herbie shell --seed 2020046 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, narrow range"
:precision binary64
: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)))