\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\left(\sqrt[3]{\frac{\mathsf{fma}\left(\left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -4\right), \left(b \cdot b\right)\right)}}\right), \left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -4\right), \left(b \cdot b\right)\right)}}\right), \left(-b\right)\right)}{2} \cdot \frac{1}{a}} \cdot \sqrt[3]{\frac{\mathsf{fma}\left(\left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -4\right), \left(b \cdot b\right)\right)}}\right), \left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -4\right), \left(b \cdot b\right)\right)}}\right), \left(-b\right)\right)}{2} \cdot \frac{1}{a}}\right) \cdot \frac{\sqrt[3]{\frac{1}{a} \cdot \mathsf{fma}\left(\left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -4\right), \left(b \cdot b\right)\right)}}\right), \left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -4\right), \left(b \cdot b\right)\right)}}\right), \left(-b\right)\right)}}{\sqrt[3]{2}}double f(double a, double b, double c) {
double r1266823 = b;
double r1266824 = -r1266823;
double r1266825 = r1266823 * r1266823;
double r1266826 = 4.0;
double r1266827 = a;
double r1266828 = r1266826 * r1266827;
double r1266829 = c;
double r1266830 = r1266828 * r1266829;
double r1266831 = r1266825 - r1266830;
double r1266832 = sqrt(r1266831);
double r1266833 = r1266824 + r1266832;
double r1266834 = 2.0;
double r1266835 = r1266834 * r1266827;
double r1266836 = r1266833 / r1266835;
return r1266836;
}
double f(double a, double b, double c) {
double r1266837 = c;
double r1266838 = a;
double r1266839 = -4.0;
double r1266840 = r1266838 * r1266839;
double r1266841 = b;
double r1266842 = r1266841 * r1266841;
double r1266843 = fma(r1266837, r1266840, r1266842);
double r1266844 = sqrt(r1266843);
double r1266845 = sqrt(r1266844);
double r1266846 = -r1266841;
double r1266847 = fma(r1266845, r1266845, r1266846);
double r1266848 = 2.0;
double r1266849 = r1266847 / r1266848;
double r1266850 = 1.0;
double r1266851 = r1266850 / r1266838;
double r1266852 = r1266849 * r1266851;
double r1266853 = cbrt(r1266852);
double r1266854 = r1266853 * r1266853;
double r1266855 = r1266851 * r1266847;
double r1266856 = cbrt(r1266855);
double r1266857 = cbrt(r1266848);
double r1266858 = r1266856 / r1266857;
double r1266859 = r1266854 * r1266858;
return r1266859;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 52.6
Simplified52.6
rmApplied add-sqr-sqrt52.6
Applied sqrt-prod52.4
Applied fma-neg51.8
rmApplied div-inv51.8
rmApplied add-cube-cbrt51.8
rmApplied associate-*l/51.8
Applied cbrt-div51.8
Final simplification51.8
herbie shell --seed 2019132 +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)))