\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -5.562666016748883260096099493207891090452 \cdot 10^{153}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 1.473620657135283571369379625694069201952 \cdot 10^{-291}:\\
\;\;\;\;\frac{1}{\left(\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b\right) \cdot \frac{1}{\frac{4}{2} \cdot c}}\\
\mathbf{elif}\;b \le 5.810083498813659672832708321836264997329 \cdot 10^{102}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r91769 = b;
double r91770 = -r91769;
double r91771 = r91769 * r91769;
double r91772 = 4.0;
double r91773 = a;
double r91774 = c;
double r91775 = r91773 * r91774;
double r91776 = r91772 * r91775;
double r91777 = r91771 - r91776;
double r91778 = sqrt(r91777);
double r91779 = r91770 - r91778;
double r91780 = 2.0;
double r91781 = r91780 * r91773;
double r91782 = r91779 / r91781;
return r91782;
}
double f(double a, double b, double c) {
double r91783 = b;
double r91784 = -5.562666016748883e+153;
bool r91785 = r91783 <= r91784;
double r91786 = -1.0;
double r91787 = c;
double r91788 = r91787 / r91783;
double r91789 = r91786 * r91788;
double r91790 = 1.4736206571352836e-291;
bool r91791 = r91783 <= r91790;
double r91792 = 1.0;
double r91793 = r91783 * r91783;
double r91794 = 4.0;
double r91795 = a;
double r91796 = r91795 * r91787;
double r91797 = r91794 * r91796;
double r91798 = r91793 - r91797;
double r91799 = sqrt(r91798);
double r91800 = r91799 - r91783;
double r91801 = 2.0;
double r91802 = r91794 / r91801;
double r91803 = r91802 * r91787;
double r91804 = r91792 / r91803;
double r91805 = r91800 * r91804;
double r91806 = r91792 / r91805;
double r91807 = 5.81008349881366e+102;
bool r91808 = r91783 <= r91807;
double r91809 = -r91783;
double r91810 = r91809 - r91799;
double r91811 = r91801 * r91795;
double r91812 = r91810 / r91811;
double r91813 = -2.0;
double r91814 = r91813 * r91783;
double r91815 = r91814 / r91811;
double r91816 = r91808 ? r91812 : r91815;
double r91817 = r91791 ? r91806 : r91816;
double r91818 = r91785 ? r91789 : r91817;
return r91818;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.1 |
|---|---|
| Target | 20.7 |
| Herbie | 6.4 |
if b < -5.562666016748883e+153Initial program 63.9
Taylor expanded around -inf 1.5
if -5.562666016748883e+153 < b < 1.4736206571352836e-291Initial program 34.3
rmApplied flip--34.4
Simplified15.7
Simplified15.7
rmApplied clear-num15.8
Simplified15.8
rmApplied associate-/r/14.5
rmApplied clear-num14.5
Simplified8.4
if 1.4736206571352836e-291 < b < 5.81008349881366e+102Initial program 8.4
if 5.81008349881366e+102 < b Initial program 47.7
rmApplied flip--63.2
Simplified62.3
Simplified62.3
Taylor expanded around 0 3.4
Final simplification6.4
herbie shell --seed 2019212
(FPCore (a b c)
:name "The quadratic formula (r2)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))