\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 -227369802444031.66:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\
\mathbf{elif}\;b \le 2.0617732603635578 \cdot 10^{-61}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(a, -4 \cdot c, b \cdot b\right)} - b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r1057501 = b;
double r1057502 = -r1057501;
double r1057503 = r1057501 * r1057501;
double r1057504 = 4.0;
double r1057505 = a;
double r1057506 = r1057504 * r1057505;
double r1057507 = c;
double r1057508 = r1057506 * r1057507;
double r1057509 = r1057503 - r1057508;
double r1057510 = sqrt(r1057509);
double r1057511 = r1057502 + r1057510;
double r1057512 = 2.0;
double r1057513 = r1057512 * r1057505;
double r1057514 = r1057511 / r1057513;
return r1057514;
}
double f(double a, double b, double c) {
double r1057515 = b;
double r1057516 = -227369802444031.66;
bool r1057517 = r1057515 <= r1057516;
double r1057518 = c;
double r1057519 = r1057518 / r1057515;
double r1057520 = a;
double r1057521 = r1057515 / r1057520;
double r1057522 = r1057519 - r1057521;
double r1057523 = 2.0;
double r1057524 = r1057522 * r1057523;
double r1057525 = r1057524 / r1057523;
double r1057526 = 2.0617732603635578e-61;
bool r1057527 = r1057515 <= r1057526;
double r1057528 = -4.0;
double r1057529 = r1057528 * r1057518;
double r1057530 = r1057515 * r1057515;
double r1057531 = fma(r1057520, r1057529, r1057530);
double r1057532 = sqrt(r1057531);
double r1057533 = r1057532 - r1057515;
double r1057534 = r1057533 / r1057520;
double r1057535 = r1057534 / r1057523;
double r1057536 = -2.0;
double r1057537 = r1057536 * r1057519;
double r1057538 = r1057537 / r1057523;
double r1057539 = r1057527 ? r1057535 : r1057538;
double r1057540 = r1057517 ? r1057525 : r1057539;
return r1057540;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -227369802444031.66Initial program 32.9
Simplified32.9
Taylor expanded around 0 32.9
Taylor expanded around -inf 6.8
Simplified6.8
if -227369802444031.66 < b < 2.0617732603635578e-61Initial program 14.9
Simplified14.9
Taylor expanded around 0 15.0
rmApplied clear-num15.0
rmApplied *-un-lft-identity15.0
Applied *-un-lft-identity15.0
Applied times-frac15.0
Applied add-cube-cbrt15.0
Applied times-frac15.0
Simplified15.0
Simplified15.0
if 2.0617732603635578e-61 < b Initial program 52.8
Simplified52.8
Taylor expanded around 0 52.8
Taylor expanded around inf 8.3
Final simplification10.5
herbie shell --seed 2019146 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))