\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, -b\right)}}{\sqrt{a}} \cdot \frac{\left(\sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, -b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, -b\right)}} \cdot \sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, -b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, -b\right)}}\right) \cdot \sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, -b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(c \cdot a, -4, b \cdot b\right)}}, -b\right)}}}{\sqrt{a}}}{2}double f(double a, double b, double c) {
double r1609093 = b;
double r1609094 = -r1609093;
double r1609095 = r1609093 * r1609093;
double r1609096 = 4.0;
double r1609097 = a;
double r1609098 = r1609096 * r1609097;
double r1609099 = c;
double r1609100 = r1609098 * r1609099;
double r1609101 = r1609095 - r1609100;
double r1609102 = sqrt(r1609101);
double r1609103 = r1609094 + r1609102;
double r1609104 = 2.0;
double r1609105 = r1609104 * r1609097;
double r1609106 = r1609103 / r1609105;
return r1609106;
}
double f(double a, double b, double c) {
double r1609107 = c;
double r1609108 = a;
double r1609109 = r1609107 * r1609108;
double r1609110 = -4.0;
double r1609111 = b;
double r1609112 = r1609111 * r1609111;
double r1609113 = fma(r1609109, r1609110, r1609112);
double r1609114 = sqrt(r1609113);
double r1609115 = sqrt(r1609114);
double r1609116 = -r1609111;
double r1609117 = fma(r1609115, r1609115, r1609116);
double r1609118 = cbrt(r1609117);
double r1609119 = sqrt(r1609108);
double r1609120 = r1609118 / r1609119;
double r1609121 = r1609118 * r1609118;
double r1609122 = cbrt(r1609121);
double r1609123 = r1609122 * r1609122;
double r1609124 = r1609123 * r1609122;
double r1609125 = r1609124 / r1609119;
double r1609126 = r1609120 * r1609125;
double r1609127 = 2.0;
double r1609128 = r1609126 / r1609127;
return r1609128;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 52.7
Simplified52.7
rmApplied add-sqr-sqrt52.7
Applied sqrt-prod52.4
Applied fma-neg51.8
rmApplied add-sqr-sqrt51.9
Applied add-cube-cbrt51.9
Applied times-frac51.9
rmApplied add-cube-cbrt51.9
Final simplification51.9
herbie shell --seed 2019165 +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)))