\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -1.569310777886352095486911207889814773134 \cdot 10^{111}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 5.202443222624254327680309207854310362882 \cdot 10^{-45}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r93205 = b;
double r93206 = -r93205;
double r93207 = r93205 * r93205;
double r93208 = 4.0;
double r93209 = a;
double r93210 = r93208 * r93209;
double r93211 = c;
double r93212 = r93210 * r93211;
double r93213 = r93207 - r93212;
double r93214 = sqrt(r93213);
double r93215 = r93206 + r93214;
double r93216 = 2.0;
double r93217 = r93216 * r93209;
double r93218 = r93215 / r93217;
return r93218;
}
double f(double a, double b, double c) {
double r93219 = b;
double r93220 = -1.569310777886352e+111;
bool r93221 = r93219 <= r93220;
double r93222 = 1.0;
double r93223 = c;
double r93224 = r93223 / r93219;
double r93225 = a;
double r93226 = r93219 / r93225;
double r93227 = r93224 - r93226;
double r93228 = r93222 * r93227;
double r93229 = 5.2024432226242543e-45;
bool r93230 = r93219 <= r93229;
double r93231 = 1.0;
double r93232 = 2.0;
double r93233 = r93231 / r93232;
double r93234 = r93219 * r93219;
double r93235 = 4.0;
double r93236 = r93235 * r93225;
double r93237 = r93236 * r93223;
double r93238 = r93234 - r93237;
double r93239 = sqrt(r93238);
double r93240 = r93239 - r93219;
double r93241 = r93240 / r93225;
double r93242 = r93233 * r93241;
double r93243 = -1.0;
double r93244 = r93243 * r93224;
double r93245 = r93230 ? r93242 : r93244;
double r93246 = r93221 ? r93228 : r93245;
return r93246;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.3 |
|---|---|
| Target | 21.1 |
| Herbie | 10.1 |
if b < -1.569310777886352e+111Initial program 50.4
Simplified50.4
Taylor expanded around -inf 3.9
Simplified3.9
if -1.569310777886352e+111 < b < 5.2024432226242543e-45Initial program 14.0
Simplified14.0
rmApplied clear-num14.1
rmApplied *-un-lft-identity14.1
Applied times-frac14.1
Applied add-cube-cbrt14.1
Applied times-frac14.1
Simplified14.1
Simplified14.0
if 5.2024432226242543e-45 < b Initial program 54.5
Simplified54.5
Taylor expanded around inf 7.4
Final simplification10.1
herbie shell --seed 2019303 +o rules:numerics
(FPCore (a b c)
:name "The quadratic formula (r1)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))