Average Error: 34.0 → 10.5
Time: 17.2s
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.900769547116861 \cdot 10^{+46}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.6528810740721013 \cdot 10^{-142}:\\ \;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(4 \cdot a\right)}\right) \cdot \frac{\frac{1}{2}}{a}\\ \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.900769547116861 \cdot 10^{+46}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r1806097 = b;
        double r1806098 = -r1806097;
        double r1806099 = r1806097 * r1806097;
        double r1806100 = 4.0;
        double r1806101 = a;
        double r1806102 = r1806100 * r1806101;
        double r1806103 = c;
        double r1806104 = r1806102 * r1806103;
        double r1806105 = r1806099 - r1806104;
        double r1806106 = sqrt(r1806105);
        double r1806107 = r1806098 + r1806106;
        double r1806108 = 2.0;
        double r1806109 = r1806108 * r1806101;
        double r1806110 = r1806107 / r1806109;
        return r1806110;
}

double f(double a, double b, double c) {
        double r1806111 = b;
        double r1806112 = -2.900769547116861e+46;
        bool r1806113 = r1806111 <= r1806112;
        double r1806114 = c;
        double r1806115 = r1806114 / r1806111;
        double r1806116 = a;
        double r1806117 = r1806111 / r1806116;
        double r1806118 = r1806115 - r1806117;
        double r1806119 = 1.6528810740721013e-142;
        bool r1806120 = r1806111 <= r1806119;
        double r1806121 = -r1806111;
        double r1806122 = r1806111 * r1806111;
        double r1806123 = 4.0;
        double r1806124 = r1806123 * r1806116;
        double r1806125 = r1806114 * r1806124;
        double r1806126 = r1806122 - r1806125;
        double r1806127 = sqrt(r1806126);
        double r1806128 = r1806121 + r1806127;
        double r1806129 = 0.5;
        double r1806130 = r1806129 / r1806116;
        double r1806131 = r1806128 * r1806130;
        double r1806132 = -r1806115;
        double r1806133 = r1806120 ? r1806131 : r1806132;
        double r1806134 = r1806113 ? r1806118 : r1806133;
        return r1806134;
}

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

    1. Initial program 35.9

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

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

    if -2.900769547116861e+46 < b < 1.6528810740721013e-142

    1. Initial program 11.5

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied div-inv11.7

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

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

    if 1.6528810740721013e-142 < b

    1. Initial program 50.1

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

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
    3. Simplified12.0

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

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

Reproduce

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