\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 -3.75649892234942667 \cdot 10^{158}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -2.70344269643200831 \cdot 10^{-282}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{elif}\;b \le 3.8265585536544478 \cdot 10^{69}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r78993 = b;
double r78994 = -r78993;
double r78995 = r78993 * r78993;
double r78996 = 4.0;
double r78997 = a;
double r78998 = c;
double r78999 = r78997 * r78998;
double r79000 = r78996 * r78999;
double r79001 = r78995 - r79000;
double r79002 = sqrt(r79001);
double r79003 = r78994 - r79002;
double r79004 = 2.0;
double r79005 = r79004 * r78997;
double r79006 = r79003 / r79005;
return r79006;
}
double f(double a, double b, double c) {
double r79007 = b;
double r79008 = -3.7564989223494267e+158;
bool r79009 = r79007 <= r79008;
double r79010 = -1.0;
double r79011 = c;
double r79012 = r79011 / r79007;
double r79013 = r79010 * r79012;
double r79014 = -2.7034426964320083e-282;
bool r79015 = r79007 <= r79014;
double r79016 = 2.0;
double r79017 = r79016 * r79011;
double r79018 = -r79007;
double r79019 = r79007 * r79007;
double r79020 = 4.0;
double r79021 = a;
double r79022 = r79021 * r79011;
double r79023 = r79020 * r79022;
double r79024 = r79019 - r79023;
double r79025 = sqrt(r79024);
double r79026 = r79018 + r79025;
double r79027 = r79017 / r79026;
double r79028 = 3.826558553654448e+69;
bool r79029 = r79007 <= r79028;
double r79030 = r79018 - r79025;
double r79031 = r79016 * r79021;
double r79032 = r79030 / r79031;
double r79033 = r79007 / r79021;
double r79034 = r79010 * r79033;
double r79035 = r79029 ? r79032 : r79034;
double r79036 = r79015 ? r79027 : r79035;
double r79037 = r79009 ? r79013 : r79036;
return r79037;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.7 |
|---|---|
| Target | 21.3 |
| Herbie | 6.8 |
if b < -3.7564989223494267e+158Initial program 64.0
Taylor expanded around -inf 1.4
if -3.7564989223494267e+158 < b < -2.7034426964320083e-282Initial program 36.4
rmApplied clear-num36.4
rmApplied flip--36.4
Applied associate-/r/36.5
Applied associate-/r*36.5
Simplified15.0
Taylor expanded around 0 8.1
if -2.7034426964320083e-282 < b < 3.826558553654448e+69Initial program 9.6
if 3.826558553654448e+69 < b Initial program 42.5
rmApplied clear-num42.6
Taylor expanded around 0 5.0
Final simplification6.8
herbie shell --seed 2020020
(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)))