Average Error: 34.4 → 10.2
Time: 18.5s
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 -1.763315479739403460017265344144602342789 \cdot 10^{89}:\\ \;\;\;\;\frac{2 \cdot \frac{c}{b} - \frac{b}{a} \cdot 2}{2}\\ \mathbf{elif}\;b \le 9.136492990928292133394320076175633285536 \cdot 10^{-23}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - 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 -1.763315479739403460017265344144602342789 \cdot 10^{89}:\\
\;\;\;\;\frac{2 \cdot \frac{c}{b} - \frac{b}{a} \cdot 2}{2}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r1965525 = b;
        double r1965526 = -r1965525;
        double r1965527 = r1965525 * r1965525;
        double r1965528 = 4.0;
        double r1965529 = a;
        double r1965530 = r1965528 * r1965529;
        double r1965531 = c;
        double r1965532 = r1965530 * r1965531;
        double r1965533 = r1965527 - r1965532;
        double r1965534 = sqrt(r1965533);
        double r1965535 = r1965526 + r1965534;
        double r1965536 = 2.0;
        double r1965537 = r1965536 * r1965529;
        double r1965538 = r1965535 / r1965537;
        return r1965538;
}

double f(double a, double b, double c) {
        double r1965539 = b;
        double r1965540 = -1.7633154797394035e+89;
        bool r1965541 = r1965539 <= r1965540;
        double r1965542 = 2.0;
        double r1965543 = c;
        double r1965544 = r1965543 / r1965539;
        double r1965545 = r1965542 * r1965544;
        double r1965546 = a;
        double r1965547 = r1965539 / r1965546;
        double r1965548 = 2.0;
        double r1965549 = r1965547 * r1965548;
        double r1965550 = r1965545 - r1965549;
        double r1965551 = r1965550 / r1965542;
        double r1965552 = 9.136492990928292e-23;
        bool r1965553 = r1965539 <= r1965552;
        double r1965554 = r1965539 * r1965539;
        double r1965555 = r1965543 * r1965546;
        double r1965556 = 4.0;
        double r1965557 = r1965555 * r1965556;
        double r1965558 = r1965554 - r1965557;
        double r1965559 = sqrt(r1965558);
        double r1965560 = r1965559 - r1965539;
        double r1965561 = r1965560 / r1965546;
        double r1965562 = r1965561 / r1965542;
        double r1965563 = -2.0;
        double r1965564 = r1965563 * r1965544;
        double r1965565 = r1965564 / r1965542;
        double r1965566 = r1965553 ? r1965562 : r1965565;
        double r1965567 = r1965541 ? r1965551 : r1965566;
        return r1965567;
}

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 < -1.7633154797394035e+89

    1. Initial program 45.7

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

      \[\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.9

      \[\leadsto \frac{\color{blue}{2 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}}}{2}\]

    if -1.7633154797394035e+89 < b < 9.136492990928292e-23

    1. Initial program 15.0

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

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{a}}{2}}\]
    3. Using strategy rm
    4. Applied div-inv15.1

      \[\leadsto \frac{\color{blue}{\left(\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b\right) \cdot \frac{1}{a}}}{2}\]
    5. Using strategy rm
    6. Applied un-div-inv15.0

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

    if 9.136492990928292e-23 < b

    1. Initial program 55.5

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.763315479739403460017265344144602342789 \cdot 10^{89}:\\ \;\;\;\;\frac{2 \cdot \frac{c}{b} - \frac{b}{a} \cdot 2}{2}\\ \mathbf{elif}\;b \le 9.136492990928292133394320076175633285536 \cdot 10^{-23}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{a}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019172 
(FPCore (a b c)
  :name "Quadratic roots, full range"
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))