\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 -6.675303265039827 \cdot 10^{+75}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{3}{2}, \left(\frac{a}{\frac{b}{c}}\right), \left(b \cdot -2\right)\right)}{3 \cdot a}\\
\mathbf{elif}\;b \le 0.031080860458343948:\\
\;\;\;\;\frac{\mathsf{fma}\left(\left(\sqrt[3]{-b} \cdot \sqrt[3]{-b}\right), \left(\sqrt[3]{-b}\right), \left(\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)\right)}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{a \cdot c}{b} \cdot \frac{-3}{2}}{3 \cdot a}\\
\end{array}double f(double a, double b, double c, double __attribute__((unused)) d) {
double r18754897 = b;
double r18754898 = -r18754897;
double r18754899 = r18754897 * r18754897;
double r18754900 = 3.0;
double r18754901 = a;
double r18754902 = r18754900 * r18754901;
double r18754903 = c;
double r18754904 = r18754902 * r18754903;
double r18754905 = r18754899 - r18754904;
double r18754906 = sqrt(r18754905);
double r18754907 = r18754898 + r18754906;
double r18754908 = r18754907 / r18754902;
return r18754908;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r18754909 = b;
double r18754910 = -6.675303265039827e+75;
bool r18754911 = r18754909 <= r18754910;
double r18754912 = 1.5;
double r18754913 = a;
double r18754914 = c;
double r18754915 = r18754909 / r18754914;
double r18754916 = r18754913 / r18754915;
double r18754917 = -2.0;
double r18754918 = r18754909 * r18754917;
double r18754919 = fma(r18754912, r18754916, r18754918);
double r18754920 = 3.0;
double r18754921 = r18754920 * r18754913;
double r18754922 = r18754919 / r18754921;
double r18754923 = 0.031080860458343948;
bool r18754924 = r18754909 <= r18754923;
double r18754925 = -r18754909;
double r18754926 = cbrt(r18754925);
double r18754927 = r18754926 * r18754926;
double r18754928 = r18754909 * r18754909;
double r18754929 = r18754921 * r18754914;
double r18754930 = r18754928 - r18754929;
double r18754931 = sqrt(r18754930);
double r18754932 = fma(r18754927, r18754926, r18754931);
double r18754933 = r18754932 / r18754921;
double r18754934 = r18754913 * r18754914;
double r18754935 = r18754934 / r18754909;
double r18754936 = -1.5;
double r18754937 = r18754935 * r18754936;
double r18754938 = r18754937 / r18754921;
double r18754939 = r18754924 ? r18754933 : r18754938;
double r18754940 = r18754911 ? r18754922 : r18754939;
return r18754940;
}



Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
if b < -6.675303265039827e+75Initial program 40.4
Taylor expanded around -inf 11.1
Simplified4.5
if -6.675303265039827e+75 < b < 0.031080860458343948Initial program 15.8
rmApplied add-cube-cbrt16.0
Applied fma-def16.0
if 0.031080860458343948 < b Initial program 55.2
Taylor expanded around inf 16.5
Final simplification14.2
herbie shell --seed 2019124 +o rules:numerics
(FPCore (a b c d)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))