Average Error: 33.2 → 10.0
Time: 44.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 -4.896735429482593 \cdot 10^{+46}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.1815645801505244 \cdot 10^{-79}:\\ \;\;\;\;\left(\sqrt{\left(c \cdot -4\right) \cdot a + b \cdot b} - b\right) \cdot \frac{1}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \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 -4.896735429482593 \cdot 10^{+46}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\

\mathbf{elif}\;b \le 1.1815645801505244 \cdot 10^{-79}:\\
\;\;\;\;\left(\sqrt{\left(c \cdot -4\right) \cdot a + b \cdot b} - b\right) \cdot \frac{1}{a \cdot 2}\\

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

\end{array}
double f(double a, double b, double c) {
        double r5161192 = b;
        double r5161193 = -r5161192;
        double r5161194 = r5161192 * r5161192;
        double r5161195 = 4.0;
        double r5161196 = a;
        double r5161197 = r5161195 * r5161196;
        double r5161198 = c;
        double r5161199 = r5161197 * r5161198;
        double r5161200 = r5161194 - r5161199;
        double r5161201 = sqrt(r5161200);
        double r5161202 = r5161193 + r5161201;
        double r5161203 = 2.0;
        double r5161204 = r5161203 * r5161196;
        double r5161205 = r5161202 / r5161204;
        return r5161205;
}

double f(double a, double b, double c) {
        double r5161206 = b;
        double r5161207 = -4.896735429482593e+46;
        bool r5161208 = r5161206 <= r5161207;
        double r5161209 = c;
        double r5161210 = r5161209 / r5161206;
        double r5161211 = a;
        double r5161212 = r5161206 / r5161211;
        double r5161213 = r5161210 - r5161212;
        double r5161214 = 1.1815645801505244e-79;
        bool r5161215 = r5161206 <= r5161214;
        double r5161216 = -4.0;
        double r5161217 = r5161209 * r5161216;
        double r5161218 = r5161217 * r5161211;
        double r5161219 = r5161206 * r5161206;
        double r5161220 = r5161218 + r5161219;
        double r5161221 = sqrt(r5161220);
        double r5161222 = r5161221 - r5161206;
        double r5161223 = 1.0;
        double r5161224 = 2.0;
        double r5161225 = r5161211 * r5161224;
        double r5161226 = r5161223 / r5161225;
        double r5161227 = r5161222 * r5161226;
        double r5161228 = -r5161210;
        double r5161229 = r5161215 ? r5161227 : r5161228;
        double r5161230 = r5161208 ? r5161213 : r5161229;
        return r5161230;
}

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 < -4.896735429482593e+46

    1. Initial program 34.6

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

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

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

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

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

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

    if -4.896735429482593e+46 < b < 1.1815645801505244e-79

    1. Initial program 12.7

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

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

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

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

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

    if 1.1815645801505244e-79 < b

    1. Initial program 52.3

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

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

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

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

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

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
    8. Simplified9.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -4.896735429482593 \cdot 10^{+46}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.1815645801505244 \cdot 10^{-79}:\\ \;\;\;\;\left(\sqrt{\left(c \cdot -4\right) \cdot a + b \cdot b} - b\right) \cdot \frac{1}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array}\]

Reproduce

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