Average Error: 34.0 → 10.3
Time: 26.6s
Precision: 64
\[\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 -3.177289780863109 \cdot 10^{+94}:\\ \;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\ \mathbf{elif}\;b \le 7.296044290893796 \cdot 10^{-114}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{a}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \end{array}\]
\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 -3.177289780863109 \cdot 10^{+94}:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\

\mathbf{elif}\;b \le 7.296044290893796 \cdot 10^{-114}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{a}}{2}\\

\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\

\end{array}
double f(double a, double b, double c) {
        double r1312520 = b;
        double r1312521 = -r1312520;
        double r1312522 = r1312520 * r1312520;
        double r1312523 = 4.0;
        double r1312524 = a;
        double r1312525 = r1312523 * r1312524;
        double r1312526 = c;
        double r1312527 = r1312525 * r1312526;
        double r1312528 = r1312522 - r1312527;
        double r1312529 = sqrt(r1312528);
        double r1312530 = r1312521 + r1312529;
        double r1312531 = 2.0;
        double r1312532 = r1312531 * r1312524;
        double r1312533 = r1312530 / r1312532;
        return r1312533;
}

double f(double a, double b, double c) {
        double r1312534 = b;
        double r1312535 = -3.177289780863109e+94;
        bool r1312536 = r1312534 <= r1312535;
        double r1312537 = c;
        double r1312538 = r1312537 / r1312534;
        double r1312539 = a;
        double r1312540 = r1312534 / r1312539;
        double r1312541 = r1312538 - r1312540;
        double r1312542 = 2.0;
        double r1312543 = r1312541 * r1312542;
        double r1312544 = r1312543 / r1312542;
        double r1312545 = 7.296044290893796e-114;
        bool r1312546 = r1312534 <= r1312545;
        double r1312547 = r1312534 * r1312534;
        double r1312548 = 4.0;
        double r1312549 = r1312539 * r1312537;
        double r1312550 = r1312548 * r1312549;
        double r1312551 = r1312547 - r1312550;
        double r1312552 = sqrt(r1312551);
        double r1312553 = r1312552 - r1312534;
        double r1312554 = r1312553 / r1312539;
        double r1312555 = r1312554 / r1312542;
        double r1312556 = -2.0;
        double r1312557 = r1312556 * r1312538;
        double r1312558 = r1312557 / r1312542;
        double r1312559 = r1312546 ? r1312555 : r1312558;
        double r1312560 = r1312536 ? r1312544 : r1312559;
        return r1312560;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if b < -3.177289780863109e+94

    1. Initial program 43.6

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Simplified43.5

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{a}}{2}}\]
    3. Taylor expanded around -inf 3.8

      \[\leadsto \frac{\color{blue}{2 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}}}{2}\]
    4. Simplified3.8

      \[\leadsto \frac{\color{blue}{2 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)}}{2}\]

    if -3.177289780863109e+94 < b < 7.296044290893796e-114

    1. Initial program 12.4

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Simplified12.3

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{a}}{2}}\]

    if 7.296044290893796e-114 < b

    1. Initial program 51.6

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Simplified51.6

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{a}}{2}}\]
    3. Taylor expanded around inf 10.8

      \[\leadsto \frac{\color{blue}{-2 \cdot \frac{c}{b}}}{2}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification10.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -3.177289780863109 \cdot 10^{+94}:\\ \;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\ \mathbf{elif}\;b \le 7.296044290893796 \cdot 10^{-114}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{a}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019141 
(FPCore (a b c)
  :name "Quadratic roots, full range"
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))