\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\left(\sqrt[3]{\sqrt[3]{\frac{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}{a}}} \cdot \left(\sqrt[3]{\sqrt[3]{\frac{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}{a}}} \cdot \sqrt[3]{\sqrt[3]{\frac{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}{a}}}\right)\right) \cdot \left(\sqrt[3]{\frac{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}{a}} \cdot \sqrt[3]{\frac{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}{a}}\right)double f(double a, double b, double c) {
double r4230928 = b;
double r4230929 = -r4230928;
double r4230930 = r4230928 * r4230928;
double r4230931 = 4.0;
double r4230932 = a;
double r4230933 = r4230931 * r4230932;
double r4230934 = c;
double r4230935 = r4230933 * r4230934;
double r4230936 = r4230930 - r4230935;
double r4230937 = sqrt(r4230936);
double r4230938 = r4230929 + r4230937;
double r4230939 = 2.0;
double r4230940 = r4230939 * r4230932;
double r4230941 = r4230938 / r4230940;
return r4230941;
}
double f(double a, double b, double c) {
double r4230942 = c;
double r4230943 = a;
double r4230944 = -4.0;
double r4230945 = r4230943 * r4230944;
double r4230946 = b;
double r4230947 = r4230946 * r4230946;
double r4230948 = fma(r4230942, r4230945, r4230947);
double r4230949 = sqrt(r4230948);
double r4230950 = sqrt(r4230949);
double r4230951 = -r4230946;
double r4230952 = fma(r4230950, r4230950, r4230951);
double r4230953 = 2.0;
double r4230954 = r4230952 / r4230953;
double r4230955 = r4230954 / r4230943;
double r4230956 = cbrt(r4230955);
double r4230957 = cbrt(r4230956);
double r4230958 = r4230957 * r4230957;
double r4230959 = r4230957 * r4230958;
double r4230960 = r4230956 * r4230956;
double r4230961 = r4230959 * r4230960;
return r4230961;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 43.9
Simplified43.9
rmApplied add-sqr-sqrt44.0
Applied fma-neg43.3
rmApplied add-cube-cbrt43.4
rmApplied add-cube-cbrt43.4
Final simplification43.4
herbie shell --seed 2019112 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))