Average Error: 33.0 → 10.8
Time: 17.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 -2.9862044966069494 \cdot 10^{+41}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.990519652731023 \cdot 10^{-106}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{\left(c \cdot a\right) \cdot -4 + b \cdot b}}{a \cdot 2}\\ \mathbf{elif}\;b \le 1.0350377446088803 \cdot 10^{-69}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le 3.325219738594455 \cdot 10^{-21}:\\ \;\;\;\;\frac{\frac{b \cdot b - \left(\left(c \cdot a\right) \cdot -4 + b \cdot b\right)}{\left(-b\right) - \sqrt{\left(c \cdot a\right) \cdot -4 + b \cdot b}}}{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 -2.9862044966069494 \cdot 10^{+41}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\

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

\mathbf{elif}\;b \le 1.0350377446088803 \cdot 10^{-69}:\\
\;\;\;\;-\frac{c}{b}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r2248245 = b;
        double r2248246 = -r2248245;
        double r2248247 = r2248245 * r2248245;
        double r2248248 = 4.0;
        double r2248249 = a;
        double r2248250 = r2248248 * r2248249;
        double r2248251 = c;
        double r2248252 = r2248250 * r2248251;
        double r2248253 = r2248247 - r2248252;
        double r2248254 = sqrt(r2248253);
        double r2248255 = r2248246 + r2248254;
        double r2248256 = 2.0;
        double r2248257 = r2248256 * r2248249;
        double r2248258 = r2248255 / r2248257;
        return r2248258;
}

double f(double a, double b, double c) {
        double r2248259 = b;
        double r2248260 = -2.9862044966069494e+41;
        bool r2248261 = r2248259 <= r2248260;
        double r2248262 = c;
        double r2248263 = r2248262 / r2248259;
        double r2248264 = a;
        double r2248265 = r2248259 / r2248264;
        double r2248266 = r2248263 - r2248265;
        double r2248267 = 1.990519652731023e-106;
        bool r2248268 = r2248259 <= r2248267;
        double r2248269 = -r2248259;
        double r2248270 = r2248262 * r2248264;
        double r2248271 = -4.0;
        double r2248272 = r2248270 * r2248271;
        double r2248273 = r2248259 * r2248259;
        double r2248274 = r2248272 + r2248273;
        double r2248275 = sqrt(r2248274);
        double r2248276 = r2248269 + r2248275;
        double r2248277 = 2.0;
        double r2248278 = r2248264 * r2248277;
        double r2248279 = r2248276 / r2248278;
        double r2248280 = 1.0350377446088803e-69;
        bool r2248281 = r2248259 <= r2248280;
        double r2248282 = -r2248263;
        double r2248283 = 3.325219738594455e-21;
        bool r2248284 = r2248259 <= r2248283;
        double r2248285 = r2248273 - r2248274;
        double r2248286 = r2248269 - r2248275;
        double r2248287 = r2248285 / r2248286;
        double r2248288 = r2248287 / r2248278;
        double r2248289 = r2248284 ? r2248288 : r2248282;
        double r2248290 = r2248281 ? r2248282 : r2248289;
        double r2248291 = r2248268 ? r2248279 : r2248290;
        double r2248292 = r2248261 ? r2248266 : r2248291;
        return r2248292;
}

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 4 regimes
  2. if b < -2.9862044966069494e+41

    1. Initial program 34.1

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Taylor expanded around -inf 6.3

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

    if -2.9862044966069494e+41 < b < 1.990519652731023e-106

    1. Initial program 12.8

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

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

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

    if 1.990519652731023e-106 < b < 1.0350377446088803e-69 or 3.325219738594455e-21 < b

    1. Initial program 53.1

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

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

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

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

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

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

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

    if 1.0350377446088803e-69 < b < 3.325219738594455e-21

    1. Initial program 35.7

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

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

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

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

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

      \[\leadsto \frac{\frac{b \cdot b - \left(b \cdot b + \left(a \cdot c\right) \cdot -4\right)}{\color{blue}{\left(-b\right) - \sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4}}}}{2 \cdot a}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification10.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.9862044966069494 \cdot 10^{+41}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.990519652731023 \cdot 10^{-106}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{\left(c \cdot a\right) \cdot -4 + b \cdot b}}{a \cdot 2}\\ \mathbf{elif}\;b \le 1.0350377446088803 \cdot 10^{-69}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le 3.325219738594455 \cdot 10^{-21}:\\ \;\;\;\;\frac{\frac{b \cdot b - \left(\left(c \cdot a\right) \cdot -4 + b \cdot b\right)}{\left(-b\right) - \sqrt{\left(c \cdot a\right) \cdot -4 + b \cdot b}}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array}\]

Reproduce

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