Average Error: 28.5 → 16.6
Time: 16.7s
Precision: 64
\[1.053671212772350866701172186984739043147 \cdot 10^{-8} \lt a \lt 94906265.62425155937671661376953125 \land 1.053671212772350866701172186984739043147 \cdot 10^{-8} \lt b \lt 94906265.62425155937671661376953125 \land 1.053671212772350866701172186984739043147 \cdot 10^{-8} \lt c \lt 94906265.62425155937671661376953125\]
\[\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 176.1804748497357593350898241624236106873:\\ \;\;\;\;\frac{\frac{\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right) - b \cdot b}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + b}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-2 \cdot \left(a \cdot c\right)}{2 \cdot \left(a \cdot b\right)}\\ \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 176.1804748497357593350898241624236106873:\\
\;\;\;\;\frac{\frac{\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right) - b \cdot b}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + b}}{2 \cdot a}\\

\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \left(a \cdot c\right)}{2 \cdot \left(a \cdot b\right)}\\

\end{array}
double f(double a, double b, double c) {
        double r31692 = b;
        double r31693 = -r31692;
        double r31694 = r31692 * r31692;
        double r31695 = 4.0;
        double r31696 = a;
        double r31697 = r31695 * r31696;
        double r31698 = c;
        double r31699 = r31697 * r31698;
        double r31700 = r31694 - r31699;
        double r31701 = sqrt(r31700);
        double r31702 = r31693 + r31701;
        double r31703 = 2.0;
        double r31704 = r31703 * r31696;
        double r31705 = r31702 / r31704;
        return r31705;
}

double f(double a, double b, double c) {
        double r31706 = b;
        double r31707 = 176.18047484973576;
        bool r31708 = r31706 <= r31707;
        double r31709 = r31706 * r31706;
        double r31710 = 4.0;
        double r31711 = a;
        double r31712 = r31710 * r31711;
        double r31713 = c;
        double r31714 = r31712 * r31713;
        double r31715 = r31709 - r31714;
        double r31716 = r31715 - r31709;
        double r31717 = sqrt(r31715);
        double r31718 = r31717 + r31706;
        double r31719 = r31716 / r31718;
        double r31720 = 2.0;
        double r31721 = r31720 * r31711;
        double r31722 = r31719 / r31721;
        double r31723 = -2.0;
        double r31724 = r31711 * r31713;
        double r31725 = r31723 * r31724;
        double r31726 = r31711 * r31706;
        double r31727 = r31720 * r31726;
        double r31728 = r31725 / r31727;
        double r31729 = r31708 ? r31722 : r31728;
        return r31729;
}

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

    1. Initial program 15.5

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

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

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

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

    if 176.18047484973576 < b

    1. Initial program 34.6

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

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

      \[\leadsto \frac{\color{blue}{-2 \cdot \frac{a \cdot c}{b}}}{2 \cdot a}\]
    4. Using strategy rm
    5. Applied add-sqr-sqrt17.7

      \[\leadsto \frac{-2 \cdot \frac{a \cdot c}{\color{blue}{\sqrt{b} \cdot \sqrt{b}}}}{2 \cdot a}\]
    6. Applied times-frac17.7

      \[\leadsto \frac{-2 \cdot \color{blue}{\left(\frac{a}{\sqrt{b}} \cdot \frac{c}{\sqrt{b}}\right)}}{2 \cdot a}\]
    7. Using strategy rm
    8. Applied frac-times17.7

      \[\leadsto \frac{-2 \cdot \color{blue}{\frac{a \cdot c}{\sqrt{b} \cdot \sqrt{b}}}}{2 \cdot a}\]
    9. Applied associate-*r/17.7

      \[\leadsto \frac{\color{blue}{\frac{-2 \cdot \left(a \cdot c\right)}{\sqrt{b} \cdot \sqrt{b}}}}{2 \cdot a}\]
    10. Applied associate-/l/17.7

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

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

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

Reproduce

herbie shell --seed 2019303 
(FPCore (a b c)
  :name "Quadratic roots, narrow range"
  :precision binary64
  :pre (and (< 1.05367121277235087e-8 a 94906265.6242515594) (< 1.05367121277235087e-8 b 94906265.6242515594) (< 1.05367121277235087e-8 c 94906265.6242515594))
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))