\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{\frac{c \cdot 4}{1}}{\left(-b\right) - \sqrt{\frac{\mathsf{fma}\left(-\left(4 \cdot a\right) \cdot \left(4 \cdot a\right), c \cdot c, {b}^{4}\right)}{\mathsf{fma}\left(b, b, \left(4 \cdot a\right) \cdot c\right)}}}double f(double a, double b, double c) {
double r36805 = b;
double r36806 = -r36805;
double r36807 = r36805 * r36805;
double r36808 = 4.0;
double r36809 = a;
double r36810 = r36808 * r36809;
double r36811 = c;
double r36812 = r36810 * r36811;
double r36813 = r36807 - r36812;
double r36814 = sqrt(r36813);
double r36815 = r36806 + r36814;
double r36816 = 2.0;
double r36817 = r36816 * r36809;
double r36818 = r36815 / r36817;
return r36818;
}
double f(double a, double b, double c) {
double r36819 = 1.0;
double r36820 = 2.0;
double r36821 = r36819 / r36820;
double r36822 = c;
double r36823 = 4.0;
double r36824 = r36822 * r36823;
double r36825 = r36824 / r36819;
double r36826 = b;
double r36827 = -r36826;
double r36828 = a;
double r36829 = r36823 * r36828;
double r36830 = r36829 * r36829;
double r36831 = -r36830;
double r36832 = r36822 * r36822;
double r36833 = 4.0;
double r36834 = pow(r36826, r36833);
double r36835 = fma(r36831, r36832, r36834);
double r36836 = r36829 * r36822;
double r36837 = fma(r36826, r36826, r36836);
double r36838 = r36835 / r36837;
double r36839 = sqrt(r36838);
double r36840 = r36827 - r36839;
double r36841 = r36825 / r36840;
double r36842 = r36821 * r36841;
return r36842;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 43.8
rmApplied flip-+43.8
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.4
rmApplied associate-/r*0.2
Simplified0.2
rmApplied flip--0.2
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020060 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e+15) (< 1.11022e-16 b 9.0072e+15) (< 1.11022e-16 c 9.0072e+15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))