Average Error: 19.3 → 12.6
Time: 52.3s
Precision: 64
\[\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \end{array}\]
\[\begin{array}{l} \mathbf{if}\;b \le 2.1331841130802315 \cdot 10^{+118}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(b + \left(-b\right)\right) + \sqrt{\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b} \cdot \sqrt{\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b}}{2 \cdot a}\\ \end{array}\\ \mathbf{elif}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - b}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b\right) + \left(b + \left(-b\right)\right)}{2 \cdot a}\\ \end{array}\]
\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\

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

\end{array}
\begin{array}{l}
\mathbf{if}\;b \le 2.1331841130802315 \cdot 10^{+118}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\\

\mathbf{else}:\\
\;\;\;\;\frac{\left(b + \left(-b\right)\right) + \sqrt{\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b} \cdot \sqrt{\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b}}{2 \cdot a}\\

\end{array}\\

\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - b}\\

\mathbf{else}:\\
\;\;\;\;\frac{\left(\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b\right) + \left(b + \left(-b\right)\right)}{2 \cdot a}\\

\end{array}
double f(double a, double b, double c) {
        double r1264242 = b;
        double r1264243 = 0.0;
        bool r1264244 = r1264242 >= r1264243;
        double r1264245 = 2.0;
        double r1264246 = c;
        double r1264247 = r1264245 * r1264246;
        double r1264248 = -r1264242;
        double r1264249 = r1264242 * r1264242;
        double r1264250 = 4.0;
        double r1264251 = a;
        double r1264252 = r1264250 * r1264251;
        double r1264253 = r1264252 * r1264246;
        double r1264254 = r1264249 - r1264253;
        double r1264255 = sqrt(r1264254);
        double r1264256 = r1264248 - r1264255;
        double r1264257 = r1264247 / r1264256;
        double r1264258 = r1264248 + r1264255;
        double r1264259 = r1264245 * r1264251;
        double r1264260 = r1264258 / r1264259;
        double r1264261 = r1264244 ? r1264257 : r1264260;
        return r1264261;
}

double f(double a, double b, double c) {
        double r1264262 = b;
        double r1264263 = 2.1331841130802315e+118;
        bool r1264264 = r1264262 <= r1264263;
        double r1264265 = 0.0;
        bool r1264266 = r1264262 >= r1264265;
        double r1264267 = 2.0;
        double r1264268 = c;
        double r1264269 = r1264267 * r1264268;
        double r1264270 = -r1264262;
        double r1264271 = -4.0;
        double r1264272 = a;
        double r1264273 = r1264272 * r1264268;
        double r1264274 = r1264262 * r1264262;
        double r1264275 = fma(r1264271, r1264273, r1264274);
        double r1264276 = sqrt(r1264275);
        double r1264277 = r1264270 - r1264276;
        double r1264278 = r1264269 / r1264277;
        double r1264279 = r1264262 + r1264270;
        double r1264280 = r1264271 * r1264268;
        double r1264281 = fma(r1264280, r1264272, r1264274);
        double r1264282 = sqrt(r1264281);
        double r1264283 = r1264282 - r1264262;
        double r1264284 = sqrt(r1264283);
        double r1264285 = r1264284 * r1264284;
        double r1264286 = r1264279 + r1264285;
        double r1264287 = r1264267 * r1264272;
        double r1264288 = r1264286 / r1264287;
        double r1264289 = r1264266 ? r1264278 : r1264288;
        double r1264290 = r1264270 - r1264262;
        double r1264291 = r1264269 / r1264290;
        double r1264292 = r1264283 + r1264279;
        double r1264293 = r1264292 / r1264287;
        double r1264294 = r1264266 ? r1264291 : r1264293;
        double r1264295 = r1264264 ? r1264289 : r1264294;
        return r1264295;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Split input into 2 regimes
  2. if b < 2.1331841130802315e+118

    1. Initial program 15.3

      \[\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \end{array}\]
    2. Simplified15.3

      \[\leadsto \color{blue}{\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} - b}{2 \cdot a}\\ \end{array}}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt15.4

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \sqrt[3]{b}}{2 \cdot a}\\ \end{array}\]
    5. Applied add-cube-cbrt15.7

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}} \cdot \sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}} - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \sqrt[3]{b}}{2 \cdot a}\\ \end{array}\]
    6. Applied prod-diff15.7

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{(\left(\sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}} \cdot \sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-\sqrt[3]{b} \cdot \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right)\right))_* + (\left(-\sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) + \left(\sqrt[3]{b} \cdot \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right)\right))_*}{2 \cdot a}\\ \end{array}\]
    7. Simplified15.3

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b\right) + (\left(-\sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) + \left(\sqrt[3]{b} \cdot \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right)\right))_*}{2 \cdot a}\\ \end{array}\]
    8. Simplified15.3

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b\right) + \left(\left(-b\right) + b\right)}{2 \cdot a}\\ \end{array}\]
    9. Using strategy rm
    10. Applied add-sqr-sqrt15.4

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

    if 2.1331841130802315e+118 < b

    1. Initial program 33.7

      \[\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \end{array}\]
    2. Simplified33.7

      \[\leadsto \color{blue}{\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} - b}{2 \cdot a}\\ \end{array}}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt33.7

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \sqrt[3]{b}}{2 \cdot a}\\ \end{array}\]
    5. Applied add-cube-cbrt33.7

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}} \cdot \sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}} - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \sqrt[3]{b}}{2 \cdot a}\\ \end{array}\]
    6. Applied prod-diff33.7

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{(\left(\sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}} \cdot \sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt[3]{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-\sqrt[3]{b} \cdot \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right)\right))_* + (\left(-\sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) + \left(\sqrt[3]{b} \cdot \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right)\right))_*}{2 \cdot a}\\ \end{array}\]
    7. Simplified33.7

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b\right) + (\left(-\sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) + \left(\sqrt[3]{b} \cdot \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right)\right))_*}{2 \cdot a}\\ \end{array}\]
    8. Simplified33.7

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b\right) + \left(\left(-b\right) + b\right)}{2 \cdot a}\\ \end{array}\]
    9. Taylor expanded around 0 2.4

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \color{blue}{b}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b\right) + \left(\left(-b\right) + b\right)}{2 \cdot a}\\ \end{array}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification12.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le 2.1331841130802315 \cdot 10^{+118}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(b + \left(-b\right)\right) + \sqrt{\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b} \cdot \sqrt{\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b}}{2 \cdot a}\\ \end{array}\\ \mathbf{elif}\;b \ge 0:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) - b}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b\right) + \left(b + \left(-b\right)\right)}{2 \cdot a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019119 +o rules:numerics
(FPCore (a b c)
  :name "jeff quadratic root 2"
  (if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))