\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{\frac{\sqrt{{b}^{4} - \left(4 \cdot \left(a \cdot c\right)\right) \cdot \left(4 \cdot \left(a \cdot c\right)\right)} \cdot \frac{\sqrt{{b}^{4} - \left(4 \cdot \left(a \cdot c\right)\right) \cdot \left(4 \cdot \left(a \cdot c\right)\right)}}{\sqrt{b \cdot b + \left(4 \cdot a\right) \cdot c}}}{\sqrt{b \cdot b + \left(4 \cdot a\right) \cdot c}}}}}{2 \cdot a}double f(double a, double b, double c) {
double r42773 = b;
double r42774 = -r42773;
double r42775 = r42773 * r42773;
double r42776 = 4.0;
double r42777 = a;
double r42778 = r42776 * r42777;
double r42779 = c;
double r42780 = r42778 * r42779;
double r42781 = r42775 - r42780;
double r42782 = sqrt(r42781);
double r42783 = r42774 + r42782;
double r42784 = 2.0;
double r42785 = r42784 * r42777;
double r42786 = r42783 / r42785;
return r42786;
}
double f(double a, double b, double c) {
double r42787 = 0.0;
double r42788 = 4.0;
double r42789 = a;
double r42790 = c;
double r42791 = r42789 * r42790;
double r42792 = r42788 * r42791;
double r42793 = r42787 + r42792;
double r42794 = b;
double r42795 = -r42794;
double r42796 = 4.0;
double r42797 = pow(r42794, r42796);
double r42798 = r42792 * r42792;
double r42799 = r42797 - r42798;
double r42800 = sqrt(r42799);
double r42801 = r42794 * r42794;
double r42802 = r42788 * r42789;
double r42803 = r42802 * r42790;
double r42804 = r42801 + r42803;
double r42805 = sqrt(r42804);
double r42806 = r42800 / r42805;
double r42807 = r42800 * r42806;
double r42808 = r42807 / r42805;
double r42809 = sqrt(r42808);
double r42810 = r42795 - r42809;
double r42811 = r42793 / r42810;
double r42812 = 2.0;
double r42813 = r42812 * r42789;
double r42814 = r42811 / r42813;
return r42814;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
rmApplied flip-+43.7
Simplified0.4
rmApplied flip--0.4
Simplified0.4
rmApplied add-sqr-sqrt0.4
Applied associate-/r*0.4
rmApplied *-un-lft-identity0.4
Applied sqrt-prod0.4
Applied add-sqr-sqrt0.5
Applied times-frac0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020047
(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)))