\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 -9.913936217078672453781998496151874189163 \cdot 10^{60}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -2.876852397051050336397941792630169519921 \cdot 10^{-50}:\\
\;\;\;\;\frac{\frac{c \cdot \left(4 \cdot a\right)}{\sqrt{b \cdot b + \left(-\left(4 \cdot a\right) \cdot c\right)} - b}}{2 \cdot a}\\
\mathbf{elif}\;b \le -1.124423417365483683607573317023703677331 \cdot 10^{-68}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 9.282387544777820560455992664410231115991 \cdot 10^{92}:\\
\;\;\;\;\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r75496 = b;
double r75497 = -r75496;
double r75498 = r75496 * r75496;
double r75499 = 4.0;
double r75500 = a;
double r75501 = c;
double r75502 = r75500 * r75501;
double r75503 = r75499 * r75502;
double r75504 = r75498 - r75503;
double r75505 = sqrt(r75504);
double r75506 = r75497 - r75505;
double r75507 = 2.0;
double r75508 = r75507 * r75500;
double r75509 = r75506 / r75508;
return r75509;
}
double f(double a, double b, double c) {
double r75510 = b;
double r75511 = -9.913936217078672e+60;
bool r75512 = r75510 <= r75511;
double r75513 = -1.0;
double r75514 = c;
double r75515 = r75514 / r75510;
double r75516 = r75513 * r75515;
double r75517 = -2.8768523970510503e-50;
bool r75518 = r75510 <= r75517;
double r75519 = 4.0;
double r75520 = a;
double r75521 = r75519 * r75520;
double r75522 = r75514 * r75521;
double r75523 = r75510 * r75510;
double r75524 = r75521 * r75514;
double r75525 = -r75524;
double r75526 = r75523 + r75525;
double r75527 = sqrt(r75526);
double r75528 = r75527 - r75510;
double r75529 = r75522 / r75528;
double r75530 = 2.0;
double r75531 = r75530 * r75520;
double r75532 = r75529 / r75531;
double r75533 = -1.1244234173654837e-68;
bool r75534 = r75510 <= r75533;
double r75535 = 9.28238754477782e+92;
bool r75536 = r75510 <= r75535;
double r75537 = -r75510;
double r75538 = r75520 * r75514;
double r75539 = r75519 * r75538;
double r75540 = r75523 - r75539;
double r75541 = sqrt(r75540);
double r75542 = r75537 - r75541;
double r75543 = r75542 / r75530;
double r75544 = r75543 / r75520;
double r75545 = -2.0;
double r75546 = r75545 * r75510;
double r75547 = r75546 / r75531;
double r75548 = r75536 ? r75544 : r75547;
double r75549 = r75534 ? r75516 : r75548;
double r75550 = r75518 ? r75532 : r75549;
double r75551 = r75512 ? r75516 : r75550;
return r75551;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.1 |
|---|---|
| Target | 20.8 |
| Herbie | 9.4 |
if b < -9.913936217078672e+60 or -2.8768523970510503e-50 < b < -1.1244234173654837e-68Initial program 56.8
Taylor expanded around -inf 5.0
if -9.913936217078672e+60 < b < -2.8768523970510503e-50Initial program 43.8
rmApplied flip--43.9
Simplified13.5
Simplified13.5
rmApplied sub-neg13.5
Simplified13.5
if -1.1244234173654837e-68 < b < 9.28238754477782e+92Initial program 13.4
rmApplied associate-/r*13.4
if 9.28238754477782e+92 < b Initial program 45.0
rmApplied flip--62.8
Simplified61.9
Simplified61.9
Taylor expanded around 0 3.6
Final simplification9.4
herbie shell --seed 2019347
(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)))