double f(double a, double b, double c) {
double r1987873 = b;
double r1987874 = -r1987873;
double r1987875 = r1987873 * r1987873;
double r1987876 = 4.0;
double r1987877 = a;
double r1987878 = r1987876 * r1987877;
double r1987879 = c;
double r1987880 = r1987878 * r1987879;
double r1987881 = r1987875 - r1987880;
double r1987882 = sqrt(r1987881);
double r1987883 = r1987874 + r1987882;
double r1987884 = 2.0;
double r1987885 = r1987884 * r1987877;
double r1987886 = r1987883 / r1987885;
return r1987886;
}
double f(double a, double b, double c) {
double r1987887 = c;
double r1987888 = a;
double r1987889 = -4.0;
double r1987890 = r1987888 * r1987889;
double r1987891 = b;
double r1987892 = r1987891 * r1987891;
double r1987893 = fma(r1987887, r1987890, r1987892);
double r1987894 = sqrt(r1987893);
double r1987895 = sqrt(r1987894);
double r1987896 = -r1987891;
double r1987897 = fma(r1987895, r1987895, r1987896);
double r1987898 = cbrt(r1987897);
double r1987899 = 2.0;
double r1987900 = cbrt(r1987899);
double r1987901 = cbrt(r1987900);
double r1987902 = r1987901 * r1987901;
double r1987903 = r1987901 * r1987902;
double r1987904 = r1987898 / r1987903;
double r1987905 = sqrt(r1987888);
double r1987906 = r1987904 / r1987905;
double r1987907 = r1987898 * r1987898;
double r1987908 = r1987900 * r1987900;
double r1987909 = r1987907 / r1987908;
double r1987910 = r1987909 / r1987905;
double r1987911 = r1987906 * r1987910;
return r1987911;
}
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{\sqrt[3]{(\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))_*}}{\sqrt[3]{\sqrt[3]{2}} \cdot \left(\sqrt[3]{\sqrt[3]{2}} \cdot \sqrt[3]{\sqrt[3]{2}}\right)}}{\sqrt{a}} \cdot \frac{\frac{\sqrt[3]{(\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))_*} \cdot \sqrt[3]{(\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))_*}}{\sqrt[3]{2} \cdot \sqrt[3]{2}}}{\sqrt{a}}


Bits error versus a



Bits error versus b



Bits error versus c
Initial program 52.4
Simplified52.4
rmApplied add-sqr-sqrt52.2
Applied fma-neg51.6
rmApplied add-sqr-sqrt51.6
Applied add-cube-cbrt51.6
Applied add-cube-cbrt51.6
Applied times-frac51.6
Applied times-frac51.6
rmApplied add-cube-cbrt51.6
Final simplification51.6
herbie shell --seed 2019102 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, wide range"
:pre (and (< 4.930380657631324e-32 a 2.028240960365167e+31) (< 4.930380657631324e-32 b 2.028240960365167e+31) (< 4.930380657631324e-32 c 2.028240960365167e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))