\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 -1.0674124610604968 \cdot 10^{-82}:\\
\;\;\;\;1 \cdot \left(-1 \cdot \frac{c}{b}\right)\\
\mathbf{elif}\;b \le 5.96876625840091586 \cdot 10^{107}:\\
\;\;\;\;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(1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\right)\\
\end{array}double f(double a, double b, double c) {
double r85275 = b;
double r85276 = -r85275;
double r85277 = r85275 * r85275;
double r85278 = 4.0;
double r85279 = a;
double r85280 = c;
double r85281 = r85279 * r85280;
double r85282 = r85278 * r85281;
double r85283 = r85277 - r85282;
double r85284 = sqrt(r85283);
double r85285 = r85276 - r85284;
double r85286 = 2.0;
double r85287 = r85286 * r85279;
double r85288 = r85285 / r85287;
return r85288;
}
double f(double a, double b, double c) {
double r85289 = b;
double r85290 = -1.0674124610604968e-82;
bool r85291 = r85289 <= r85290;
double r85292 = 1.0;
double r85293 = -1.0;
double r85294 = c;
double r85295 = r85294 / r85289;
double r85296 = r85293 * r85295;
double r85297 = r85292 * r85296;
double r85298 = 5.968766258400916e+107;
bool r85299 = r85289 <= r85298;
double r85300 = -r85289;
double r85301 = r85289 * r85289;
double r85302 = 4.0;
double r85303 = a;
double r85304 = r85303 * r85294;
double r85305 = r85302 * r85304;
double r85306 = r85301 - r85305;
double r85307 = sqrt(r85306);
double r85308 = r85300 - r85307;
double r85309 = 2.0;
double r85310 = r85309 * r85303;
double r85311 = r85308 / r85310;
double r85312 = r85292 * r85311;
double r85313 = 1.0;
double r85314 = r85289 / r85303;
double r85315 = r85295 - r85314;
double r85316 = r85313 * r85315;
double r85317 = r85292 * r85316;
double r85318 = r85299 ? r85312 : r85317;
double r85319 = r85291 ? r85297 : r85318;
return r85319;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.4 |
|---|---|
| Target | 21.5 |
| Herbie | 10.3 |
if b < -1.0674124610604968e-82Initial program 52.3
rmApplied clear-num52.4
rmApplied *-un-lft-identity52.4
Applied add-cube-cbrt52.4
Applied times-frac52.4
Simplified52.4
Simplified52.3
Taylor expanded around -inf 8.9
if -1.0674124610604968e-82 < b < 5.968766258400916e+107Initial program 13.7
rmApplied clear-num13.9
rmApplied *-un-lft-identity13.9
Applied add-cube-cbrt13.9
Applied times-frac13.9
Simplified13.9
Simplified13.7
if 5.968766258400916e+107 < b Initial program 50.0
rmApplied clear-num50.0
rmApplied *-un-lft-identity50.0
Applied add-cube-cbrt50.0
Applied times-frac50.0
Simplified50.0
Simplified50.0
Taylor expanded around inf 3.8
Simplified3.8
Final simplification10.3
herbie shell --seed 2020062
(FPCore (a b c)
:name "quadm (p42, negative)"
: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)))