\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.369694371126339229257094016308893237032 \cdot 10^{-83}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 6.823527231207463414371193958705943379769 \cdot 10^{100}:\\
\;\;\;\;1 \cdot \left(\left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{2 \cdot a}\right)\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r90634 = b;
double r90635 = -r90634;
double r90636 = r90634 * r90634;
double r90637 = 4.0;
double r90638 = a;
double r90639 = c;
double r90640 = r90638 * r90639;
double r90641 = r90637 * r90640;
double r90642 = r90636 - r90641;
double r90643 = sqrt(r90642);
double r90644 = r90635 - r90643;
double r90645 = 2.0;
double r90646 = r90645 * r90638;
double r90647 = r90644 / r90646;
return r90647;
}
double f(double a, double b, double c) {
double r90648 = b;
double r90649 = -1.3696943711263392e-83;
bool r90650 = r90648 <= r90649;
double r90651 = -1.0;
double r90652 = c;
double r90653 = r90652 / r90648;
double r90654 = r90651 * r90653;
double r90655 = 6.8235272312074634e+100;
bool r90656 = r90648 <= r90655;
double r90657 = 1.0;
double r90658 = -r90648;
double r90659 = r90648 * r90648;
double r90660 = 4.0;
double r90661 = a;
double r90662 = r90661 * r90652;
double r90663 = r90660 * r90662;
double r90664 = r90659 - r90663;
double r90665 = sqrt(r90664);
double r90666 = r90658 - r90665;
double r90667 = 2.0;
double r90668 = r90667 * r90661;
double r90669 = r90657 / r90668;
double r90670 = r90666 * r90669;
double r90671 = r90657 * r90670;
double r90672 = 1.0;
double r90673 = r90648 / r90661;
double r90674 = r90653 - r90673;
double r90675 = r90672 * r90674;
double r90676 = r90656 ? r90671 : r90675;
double r90677 = r90650 ? r90654 : r90676;
return r90677;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.8 |
|---|---|
| Target | 20.8 |
| Herbie | 9.9 |
if b < -1.3696943711263392e-83Initial program 53.2
Taylor expanded around -inf 9.4
if -1.3696943711263392e-83 < b < 6.8235272312074634e+100Initial program 12.3
rmApplied div-inv12.5
rmApplied *-un-lft-identity12.5
if 6.8235272312074634e+100 < b Initial program 46.4
Taylor expanded around inf 3.6
Simplified3.6
Final simplification9.9
herbie shell --seed 2019362
(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)))