\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 -2.8813430075089506 \cdot 10^{-61}:\\
\;\;\;\;1 \cdot \left(-1 \cdot \frac{c}{b}\right)\\
\mathbf{elif}\;b \le 7.35146897748971308 \cdot 10^{79}:\\
\;\;\;\;1 \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r68199 = b;
double r68200 = -r68199;
double r68201 = r68199 * r68199;
double r68202 = 4.0;
double r68203 = a;
double r68204 = c;
double r68205 = r68203 * r68204;
double r68206 = r68202 * r68205;
double r68207 = r68201 - r68206;
double r68208 = sqrt(r68207);
double r68209 = r68200 - r68208;
double r68210 = 2.0;
double r68211 = r68210 * r68203;
double r68212 = r68209 / r68211;
return r68212;
}
double f(double a, double b, double c) {
double r68213 = b;
double r68214 = -2.8813430075089506e-61;
bool r68215 = r68213 <= r68214;
double r68216 = 1.0;
double r68217 = -1.0;
double r68218 = c;
double r68219 = r68218 / r68213;
double r68220 = r68217 * r68219;
double r68221 = r68216 * r68220;
double r68222 = 7.351468977489713e+79;
bool r68223 = r68213 <= r68222;
double r68224 = -r68213;
double r68225 = r68213 * r68213;
double r68226 = 4.0;
double r68227 = a;
double r68228 = r68227 * r68218;
double r68229 = r68226 * r68228;
double r68230 = r68225 - r68229;
double r68231 = sqrt(r68230);
double r68232 = r68224 - r68231;
double r68233 = 2.0;
double r68234 = r68233 * r68227;
double r68235 = r68232 / r68234;
double r68236 = r68216 * r68235;
double r68237 = 1.0;
double r68238 = r68213 / r68227;
double r68239 = r68219 - r68238;
double r68240 = r68237 * r68239;
double r68241 = r68223 ? r68236 : r68240;
double r68242 = r68215 ? r68221 : r68241;
return r68242;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.3 |
|---|---|
| Target | 20.7 |
| Herbie | 10.0 |
if b < -2.8813430075089506e-61Initial program 53.2
rmApplied clear-num53.2
rmApplied *-un-lft-identity53.2
Applied add-cube-cbrt53.2
Applied times-frac53.2
Simplified53.2
Simplified53.2
Taylor expanded around -inf 8.4
if -2.8813430075089506e-61 < b < 7.351468977489713e+79Initial program 13.3
rmApplied clear-num13.5
rmApplied *-un-lft-identity13.5
Applied add-cube-cbrt13.5
Applied times-frac13.5
Simplified13.5
Simplified13.3
if 7.351468977489713e+79 < b Initial program 41.8
Taylor expanded around inf 4.5
Simplified4.5
Final simplification10.0
herbie shell --seed 2020003 +o rules:numerics
(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)))