\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)} \cdot \left(4 \cdot c\right)double f(double a, double b, double c) {
double r33637 = b;
double r33638 = -r33637;
double r33639 = r33637 * r33637;
double r33640 = 4.0;
double r33641 = a;
double r33642 = r33640 * r33641;
double r33643 = c;
double r33644 = r33642 * r33643;
double r33645 = r33639 - r33644;
double r33646 = sqrt(r33645);
double r33647 = r33638 + r33646;
double r33648 = 2.0;
double r33649 = r33648 * r33641;
double r33650 = r33647 / r33649;
return r33650;
}
double f(double a, double b, double c) {
double r33651 = 1.0;
double r33652 = 2.0;
double r33653 = b;
double r33654 = -r33653;
double r33655 = r33653 * r33653;
double r33656 = 4.0;
double r33657 = a;
double r33658 = r33656 * r33657;
double r33659 = c;
double r33660 = r33658 * r33659;
double r33661 = r33655 - r33660;
double r33662 = sqrt(r33661);
double r33663 = r33654 - r33662;
double r33664 = r33652 * r33663;
double r33665 = r33651 / r33664;
double r33666 = r33656 * r33659;
double r33667 = r33665 * r33666;
return r33667;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.6
rmApplied flip-+28.6
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-/l*0.5
Simplified0.5
rmApplied times-frac0.5
Applied associate-*l*0.5
Simplified0.4
rmApplied frac-times0.4
Applied associate-/r/0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020065
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))