Average Error: 44.7 → 11.0
Time: 16.5s
Precision: 64
\[1.1102230246251565 \cdot 10^{-16} \lt a \lt 9007199254740992.0 \land 1.1102230246251565 \cdot 10^{-16} \lt b \lt 9007199254740992.0 \land 1.1102230246251565 \cdot 10^{-16} \lt c \lt 9007199254740992.0\]
\[\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.09946845057046652:\\ \;\;\;\;\frac{\frac{\frac{\left(b \cdot b - 4 \cdot \left(c \cdot a\right)\right) - b \cdot b}{b + \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}}}{a}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{c}{b} \cdot -2}{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 0.09946845057046652:\\
\;\;\;\;\frac{\frac{\frac{\left(b \cdot b - 4 \cdot \left(c \cdot a\right)\right) - b \cdot b}{b + \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}}}{a}}{2}\\

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

\end{array}
double f(double a, double b, double c) {
        double r622964 = b;
        double r622965 = -r622964;
        double r622966 = r622964 * r622964;
        double r622967 = 4.0;
        double r622968 = a;
        double r622969 = r622967 * r622968;
        double r622970 = c;
        double r622971 = r622969 * r622970;
        double r622972 = r622966 - r622971;
        double r622973 = sqrt(r622972);
        double r622974 = r622965 + r622973;
        double r622975 = 2.0;
        double r622976 = r622975 * r622968;
        double r622977 = r622974 / r622976;
        return r622977;
}

double f(double a, double b, double c) {
        double r622978 = b;
        double r622979 = 0.09946845057046652;
        bool r622980 = r622978 <= r622979;
        double r622981 = r622978 * r622978;
        double r622982 = 4.0;
        double r622983 = c;
        double r622984 = a;
        double r622985 = r622983 * r622984;
        double r622986 = r622982 * r622985;
        double r622987 = r622981 - r622986;
        double r622988 = r622987 - r622981;
        double r622989 = sqrt(r622987);
        double r622990 = r622978 + r622989;
        double r622991 = r622988 / r622990;
        double r622992 = r622991 / r622984;
        double r622993 = 2.0;
        double r622994 = r622992 / r622993;
        double r622995 = r622983 / r622978;
        double r622996 = -2.0;
        double r622997 = r622995 * r622996;
        double r622998 = r622997 / r622993;
        double r622999 = r622980 ? r622994 : r622998;
        return r622999;
}

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 2 regimes
  2. if b < 0.09946845057046652

    1. Initial program 24.0

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Simplified24.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 flip--24.1

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

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

    if 0.09946845057046652 < b

    1. Initial program 47.7

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Simplified47.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 9.2

      \[\leadsto \frac{\color{blue}{-2 \cdot \frac{c}{b}}}{2}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification11.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le 0.09946845057046652:\\ \;\;\;\;\frac{\frac{\frac{\left(b \cdot b - 4 \cdot \left(c \cdot a\right)\right) - b \cdot b}{b + \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}}}{a}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{c}{b} \cdot -2}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019152 
(FPCore (a b c)
  :name "Quadratic roots, medium range"
  :pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))