Average Error: 34.4 → 10.2
Time: 18.0s
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 r1924199 = b;
        double r1924200 = -r1924199;
        double r1924201 = r1924199 * r1924199;
        double r1924202 = 4.0;
        double r1924203 = a;
        double r1924204 = r1924202 * r1924203;
        double r1924205 = c;
        double r1924206 = r1924204 * r1924205;
        double r1924207 = r1924201 - r1924206;
        double r1924208 = sqrt(r1924207);
        double r1924209 = r1924200 + r1924208;
        double r1924210 = 2.0;
        double r1924211 = r1924210 * r1924203;
        double r1924212 = r1924209 / r1924211;
        return r1924212;
}

double f(double a, double b, double c) {
        double r1924213 = b;
        double r1924214 = -1.7633154797394035e+89;
        bool r1924215 = r1924213 <= r1924214;
        double r1924216 = 2.0;
        double r1924217 = c;
        double r1924218 = r1924217 / r1924213;
        double r1924219 = r1924216 * r1924218;
        double r1924220 = a;
        double r1924221 = r1924213 / r1924220;
        double r1924222 = 2.0;
        double r1924223 = r1924221 * r1924222;
        double r1924224 = r1924219 - r1924223;
        double r1924225 = r1924224 / r1924216;
        double r1924226 = 9.136492990928292e-23;
        bool r1924227 = r1924213 <= r1924226;
        double r1924228 = r1924213 * r1924213;
        double r1924229 = r1924217 * r1924220;
        double r1924230 = 4.0;
        double r1924231 = r1924229 * r1924230;
        double r1924232 = r1924228 - r1924231;
        double r1924233 = sqrt(r1924232);
        double r1924234 = r1924233 - r1924213;
        double r1924235 = r1924234 / r1924220;
        double r1924236 = r1924235 / r1924216;
        double r1924237 = -2.0;
        double r1924238 = r1924237 * r1924218;
        double r1924239 = r1924238 / r1924216;
        double r1924240 = r1924227 ? r1924236 : r1924239;
        double r1924241 = r1924215 ? r1924225 : r1924240;
        return r1924241;
}

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)))