Average Error: 34.1 → 9.9
Time: 11.4s
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 -0.1973887031618163923063491438369965180755:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 1.724197465942408751027868496272110613308 \cdot 10^{-216}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{elif}\;b \le 813278.22458350402303040027618408203125:\\ \;\;\;\;\frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \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 -0.1973887031618163923063491438369965180755:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\

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

\mathbf{elif}\;b \le 813278.22458350402303040027618408203125:\\
\;\;\;\;\frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\

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

\end{array}
double f(double a, double b, double c) {
        double r44910 = b;
        double r44911 = -r44910;
        double r44912 = r44910 * r44910;
        double r44913 = 4.0;
        double r44914 = a;
        double r44915 = r44913 * r44914;
        double r44916 = c;
        double r44917 = r44915 * r44916;
        double r44918 = r44912 - r44917;
        double r44919 = sqrt(r44918);
        double r44920 = r44911 + r44919;
        double r44921 = 2.0;
        double r44922 = r44921 * r44914;
        double r44923 = r44920 / r44922;
        return r44923;
}

double f(double a, double b, double c) {
        double r44924 = b;
        double r44925 = -0.1973887031618164;
        bool r44926 = r44924 <= r44925;
        double r44927 = 1.0;
        double r44928 = c;
        double r44929 = r44928 / r44924;
        double r44930 = a;
        double r44931 = r44924 / r44930;
        double r44932 = r44929 - r44931;
        double r44933 = r44927 * r44932;
        double r44934 = 1.7241974659424088e-216;
        bool r44935 = r44924 <= r44934;
        double r44936 = -r44924;
        double r44937 = r44924 * r44924;
        double r44938 = 4.0;
        double r44939 = r44938 * r44930;
        double r44940 = r44939 * r44928;
        double r44941 = r44937 - r44940;
        double r44942 = sqrt(r44941);
        double r44943 = r44936 + r44942;
        double r44944 = 2.0;
        double r44945 = r44944 * r44930;
        double r44946 = r44943 / r44945;
        double r44947 = 813278.224583504;
        bool r44948 = r44924 <= r44947;
        double r44949 = 0.0;
        double r44950 = r44930 * r44928;
        double r44951 = r44938 * r44950;
        double r44952 = r44949 + r44951;
        double r44953 = r44936 - r44942;
        double r44954 = r44952 / r44953;
        double r44955 = r44954 / r44945;
        double r44956 = -1.0;
        double r44957 = r44956 * r44929;
        double r44958 = r44948 ? r44955 : r44957;
        double r44959 = r44935 ? r44946 : r44958;
        double r44960 = r44926 ? r44933 : r44959;
        return r44960;
}

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

    1. Initial program 32.2

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

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

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

    if -0.1973887031618164 < b < 1.7241974659424088e-216

    1. Initial program 11.9

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

    if 1.7241974659424088e-216 < b < 813278.224583504

    1. Initial program 28.8

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

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

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

    if 813278.224583504 < b

    1. Initial program 55.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.8

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification9.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -0.1973887031618163923063491438369965180755:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 1.724197465942408751027868496272110613308 \cdot 10^{-216}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{elif}\;b \le 813278.22458350402303040027618408203125:\\ \;\;\;\;\frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

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