Average Error: 33.8 → 9.7
Time: 15.3s
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.6257289292067596 \cdot 10^{+144}:\\ \;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\ \mathbf{elif}\;b \le 1.739098950628615 \cdot 10^{-79}:\\ \;\;\;\;\frac{\frac{1}{\frac{a}{\sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4} - b}}}{2}\\ \mathbf{elif}\;b \le 1.8656332031849816 \cdot 10^{-25}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \mathbf{elif}\;b \le 5.297236684235463 \cdot 10^{-16}:\\ \;\;\;\;\frac{\frac{1}{\frac{a}{\sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4} \cdot \sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4} - b \cdot b}} \cdot \frac{1}{b + \sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4}}}{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.6257289292067596 \cdot 10^{+144}:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\

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

\mathbf{elif}\;b \le 1.8656332031849816 \cdot 10^{-25}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r948023 = b;
        double r948024 = -r948023;
        double r948025 = r948023 * r948023;
        double r948026 = 4.0;
        double r948027 = a;
        double r948028 = r948026 * r948027;
        double r948029 = c;
        double r948030 = r948028 * r948029;
        double r948031 = r948025 - r948030;
        double r948032 = sqrt(r948031);
        double r948033 = r948024 + r948032;
        double r948034 = 2.0;
        double r948035 = r948034 * r948027;
        double r948036 = r948033 / r948035;
        return r948036;
}

double f(double a, double b, double c) {
        double r948037 = b;
        double r948038 = -1.6257289292067596e+144;
        bool r948039 = r948037 <= r948038;
        double r948040 = c;
        double r948041 = r948040 / r948037;
        double r948042 = a;
        double r948043 = r948037 / r948042;
        double r948044 = r948041 - r948043;
        double r948045 = 2.0;
        double r948046 = r948044 * r948045;
        double r948047 = r948046 / r948045;
        double r948048 = 1.739098950628615e-79;
        bool r948049 = r948037 <= r948048;
        double r948050 = 1.0;
        double r948051 = r948037 * r948037;
        double r948052 = r948042 * r948040;
        double r948053 = -4.0;
        double r948054 = r948052 * r948053;
        double r948055 = r948051 + r948054;
        double r948056 = sqrt(r948055);
        double r948057 = r948056 - r948037;
        double r948058 = r948042 / r948057;
        double r948059 = r948050 / r948058;
        double r948060 = r948059 / r948045;
        double r948061 = 1.8656332031849816e-25;
        bool r948062 = r948037 <= r948061;
        double r948063 = -2.0;
        double r948064 = r948063 * r948041;
        double r948065 = r948064 / r948045;
        double r948066 = 5.297236684235463e-16;
        bool r948067 = r948037 <= r948066;
        double r948068 = r948056 * r948056;
        double r948069 = r948068 - r948051;
        double r948070 = r948042 / r948069;
        double r948071 = r948050 / r948070;
        double r948072 = r948037 + r948056;
        double r948073 = r948050 / r948072;
        double r948074 = r948071 * r948073;
        double r948075 = r948074 / r948045;
        double r948076 = r948067 ? r948075 : r948065;
        double r948077 = r948062 ? r948065 : r948076;
        double r948078 = r948049 ? r948060 : r948077;
        double r948079 = r948039 ? r948047 : r948078;
        return r948079;
}

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 < -1.6257289292067596e+144

    1. Initial program 58.0

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

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

      \[\leadsto \frac{\color{blue}{2 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}}}{2}\]
    4. Simplified2.5

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

    if -1.6257289292067596e+144 < b < 1.739098950628615e-79

    1. Initial program 11.7

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

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

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

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

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

    if 1.739098950628615e-79 < b < 1.8656332031849816e-25 or 5.297236684235463e-16 < b

    1. Initial program 53.2

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

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

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

    if 1.8656332031849816e-25 < b < 5.297236684235463e-16

    1. Initial program 42.7

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

      \[\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 clear-num42.8

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

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

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

      \[\leadsto \frac{\frac{1}{\frac{a}{\color{blue}{\frac{\sqrt{-4 \cdot \left(c \cdot a\right) + b \cdot b} \cdot \sqrt{-4 \cdot \left(c \cdot a\right) + b \cdot b} - b \cdot b}{\sqrt{-4 \cdot \left(c \cdot a\right) + b \cdot b} + b}}}}}{2}\]
    10. Applied associate-/r/42.9

      \[\leadsto \frac{\frac{1}{\color{blue}{\frac{a}{\sqrt{-4 \cdot \left(c \cdot a\right) + b \cdot b} \cdot \sqrt{-4 \cdot \left(c \cdot a\right) + b \cdot b} - b \cdot b} \cdot \left(\sqrt{-4 \cdot \left(c \cdot a\right) + b \cdot b} + b\right)}}}{2}\]
    11. Applied *-un-lft-identity42.9

      \[\leadsto \frac{\frac{\color{blue}{1 \cdot 1}}{\frac{a}{\sqrt{-4 \cdot \left(c \cdot a\right) + b \cdot b} \cdot \sqrt{-4 \cdot \left(c \cdot a\right) + b \cdot b} - b \cdot b} \cdot \left(\sqrt{-4 \cdot \left(c \cdot a\right) + b \cdot b} + b\right)}}{2}\]
    12. Applied times-frac42.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.6257289292067596 \cdot 10^{+144}:\\ \;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\ \mathbf{elif}\;b \le 1.739098950628615 \cdot 10^{-79}:\\ \;\;\;\;\frac{\frac{1}{\frac{a}{\sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4} - b}}}{2}\\ \mathbf{elif}\;b \le 1.8656332031849816 \cdot 10^{-25}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \mathbf{elif}\;b \le 5.297236684235463 \cdot 10^{-16}:\\ \;\;\;\;\frac{\frac{1}{\frac{a}{\sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4} \cdot \sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4} - b \cdot b}} \cdot \frac{1}{b + \sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4}}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \end{array}\]

Reproduce

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