\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -7.943482039519133630405882994043698433958 \cdot 10^{75}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{2 \cdot c}{\sqrt[3]{\mathsf{fma}\left(\frac{c \cdot a}{b}, 2, -2 \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\frac{c \cdot a}{b}, 2, -2 \cdot b\right)}}}{\sqrt[3]{\mathsf{fma}\left(2, \frac{c}{\frac{b}{a}}, -2 \cdot b\right)}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\
\end{array}\\
\mathbf{elif}\;b \le 2.620543139740264315993856298302188165155 \cdot 10^{84}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\sqrt{\mathsf{fma}\left(-c, 4 \cdot a, b \cdot b\right)}} \cdot \sqrt{\sqrt{\mathsf{fma}\left(-c, 4 \cdot a, b \cdot b\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{a \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\mathsf{fma}\left(2, \frac{c}{\frac{b}{a}}, -2 \cdot b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{{\left(\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4}\right)}^{3}} + \left(-b\right)}{a \cdot 2}\\
\end{array}double f(double a, double b, double c) {
double r39961 = b;
double r39962 = 0.0;
bool r39963 = r39961 >= r39962;
double r39964 = 2.0;
double r39965 = c;
double r39966 = r39964 * r39965;
double r39967 = -r39961;
double r39968 = r39961 * r39961;
double r39969 = 4.0;
double r39970 = a;
double r39971 = r39969 * r39970;
double r39972 = r39971 * r39965;
double r39973 = r39968 - r39972;
double r39974 = sqrt(r39973);
double r39975 = r39967 - r39974;
double r39976 = r39966 / r39975;
double r39977 = r39967 + r39974;
double r39978 = r39964 * r39970;
double r39979 = r39977 / r39978;
double r39980 = r39963 ? r39976 : r39979;
return r39980;
}
double f(double a, double b, double c) {
double r39981 = b;
double r39982 = -7.943482039519134e+75;
bool r39983 = r39981 <= r39982;
double r39984 = 0.0;
bool r39985 = r39981 >= r39984;
double r39986 = 2.0;
double r39987 = c;
double r39988 = r39986 * r39987;
double r39989 = a;
double r39990 = r39987 * r39989;
double r39991 = r39990 / r39981;
double r39992 = -2.0;
double r39993 = r39992 * r39981;
double r39994 = fma(r39991, r39986, r39993);
double r39995 = cbrt(r39994);
double r39996 = r39995 * r39995;
double r39997 = r39988 / r39996;
double r39998 = r39981 / r39989;
double r39999 = r39987 / r39998;
double r40000 = fma(r39986, r39999, r39993);
double r40001 = cbrt(r40000);
double r40002 = r39997 / r40001;
double r40003 = r39987 / r39981;
double r40004 = r40003 - r39998;
double r40005 = 1.0;
double r40006 = r40004 * r40005;
double r40007 = r39985 ? r40002 : r40006;
double r40008 = 2.6205431397402643e+84;
bool r40009 = r39981 <= r40008;
double r40010 = -r39981;
double r40011 = -r39987;
double r40012 = 4.0;
double r40013 = r40012 * r39989;
double r40014 = r39981 * r39981;
double r40015 = fma(r40011, r40013, r40014);
double r40016 = sqrt(r40015);
double r40017 = sqrt(r40016);
double r40018 = r40017 * r40017;
double r40019 = r40010 - r40018;
double r40020 = r39988 / r40019;
double r40021 = r40013 * r39987;
double r40022 = r40014 - r40021;
double r40023 = sqrt(r40022);
double r40024 = r40023 + r40010;
double r40025 = r39989 * r39986;
double r40026 = r40024 / r40025;
double r40027 = r39985 ? r40020 : r40026;
double r40028 = r39988 / r40000;
double r40029 = r39990 * r40012;
double r40030 = r40014 - r40029;
double r40031 = sqrt(r40030);
double r40032 = 3.0;
double r40033 = pow(r40031, r40032);
double r40034 = cbrt(r40033);
double r40035 = r40034 + r40010;
double r40036 = r40035 / r40025;
double r40037 = r39985 ? r40028 : r40036;
double r40038 = r40009 ? r40027 : r40037;
double r40039 = r39983 ? r40007 : r40038;
return r40039;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -7.943482039519134e+75Initial program 42.7
Taylor expanded around inf 42.7
Simplified42.7
Taylor expanded around -inf 9.5
Simplified4.3
Taylor expanded around 0 4.2
Simplified4.2
rmApplied add-cube-cbrt4.2
Applied associate-/r*4.2
Simplified4.2
if -7.943482039519134e+75 < b < 2.6205431397402643e+84Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
Simplified9.1
Simplified9.1
if 2.6205431397402643e+84 < b Initial program 27.7
Taylor expanded around inf 5.8
Simplified2.4
rmApplied add-cbrt-cube2.4
Simplified2.4
Final simplification6.5
herbie shell --seed 2019194 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0.0) (/ (* 2.0 c) (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a))))