Average Error: 52.7 → 51.1
Time: 51.7s
Precision: 64
\[4.930380657631324 \cdot 10^{-32} \lt a \lt 2.028240960365167 \cdot 10^{+31} \land 4.930380657631324 \cdot 10^{-32} \lt b \lt 2.028240960365167 \cdot 10^{+31} \land 4.930380657631324 \cdot 10^{-32} \lt c \lt 2.028240960365167 \cdot 10^{+31}\]
\[\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 8.254129378667163 \cdot 10^{+18}:\\ \;\;\;\;\frac{\frac{(\left(\sqrt{\sqrt{\sqrt[3]{\left((c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_* \cdot (c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*\right) \cdot (c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{-2}{b} \cdot e^{\log c + \log a}} \cdot \sqrt[3]{\frac{1}{2}}}{\sqrt{a}} \cdot \frac{\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}}{\sqrt{a}}\\ \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 8.254129378667163 \cdot 10^{+18}:\\
\;\;\;\;\frac{\frac{(\left(\sqrt{\sqrt{\sqrt[3]{\left((c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_* \cdot (c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*\right) \cdot (c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}{a}\\

\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{-2}{b} \cdot e^{\log c + \log a}} \cdot \sqrt[3]{\frac{1}{2}}}{\sqrt{a}} \cdot \frac{\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}}{\sqrt{a}}\\

\end{array}
double f(double a, double b, double c) {
        double r1932355 = b;
        double r1932356 = -r1932355;
        double r1932357 = r1932355 * r1932355;
        double r1932358 = 4.0;
        double r1932359 = a;
        double r1932360 = r1932358 * r1932359;
        double r1932361 = c;
        double r1932362 = r1932360 * r1932361;
        double r1932363 = r1932357 - r1932362;
        double r1932364 = sqrt(r1932363);
        double r1932365 = r1932356 + r1932364;
        double r1932366 = 2.0;
        double r1932367 = r1932366 * r1932359;
        double r1932368 = r1932365 / r1932367;
        return r1932368;
}

double f(double a, double b, double c) {
        double r1932369 = b;
        double r1932370 = 8.254129378667163e+18;
        bool r1932371 = r1932369 <= r1932370;
        double r1932372 = c;
        double r1932373 = -4.0;
        double r1932374 = a;
        double r1932375 = r1932373 * r1932374;
        double r1932376 = r1932369 * r1932369;
        double r1932377 = fma(r1932372, r1932375, r1932376);
        double r1932378 = r1932377 * r1932377;
        double r1932379 = r1932378 * r1932377;
        double r1932380 = cbrt(r1932379);
        double r1932381 = sqrt(r1932380);
        double r1932382 = sqrt(r1932381);
        double r1932383 = sqrt(r1932377);
        double r1932384 = sqrt(r1932383);
        double r1932385 = -r1932369;
        double r1932386 = fma(r1932382, r1932384, r1932385);
        double r1932387 = 2.0;
        double r1932388 = r1932386 / r1932387;
        double r1932389 = r1932388 / r1932374;
        double r1932390 = -2.0;
        double r1932391 = r1932390 / r1932369;
        double r1932392 = log(r1932372);
        double r1932393 = log(r1932374);
        double r1932394 = r1932392 + r1932393;
        double r1932395 = exp(r1932394);
        double r1932396 = r1932391 * r1932395;
        double r1932397 = cbrt(r1932396);
        double r1932398 = 0.5;
        double r1932399 = cbrt(r1932398);
        double r1932400 = r1932397 * r1932399;
        double r1932401 = sqrt(r1932374);
        double r1932402 = r1932400 / r1932401;
        double r1932403 = fma(r1932384, r1932384, r1932385);
        double r1932404 = r1932403 / r1932387;
        double r1932405 = cbrt(r1932404);
        double r1932406 = r1932405 * r1932405;
        double r1932407 = r1932406 / r1932401;
        double r1932408 = r1932402 * r1932407;
        double r1932409 = r1932371 ? r1932389 : r1932408;
        return r1932409;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Split input into 2 regimes
  2. if b < 8.254129378667163e+18

    1. Initial program 48.8

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

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*} - b}{2}}{a}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt48.8

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

      \[\leadsto \frac{\frac{\color{blue}{\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}} \cdot \sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}} - b}{2}}{a}\]
    6. Applied fma-neg48.0

      \[\leadsto \frac{\frac{\color{blue}{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}}{2}}{a}\]
    7. Using strategy rm
    8. Applied add-cbrt-cube48.0

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

    if 8.254129378667163e+18 < b

    1. Initial program 58.8

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

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*} - b}{2}}{a}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt58.8

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

      \[\leadsto \frac{\frac{\color{blue}{\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}} \cdot \sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}} - b}{2}}{a}\]
    6. Applied fma-neg58.0

      \[\leadsto \frac{\frac{\color{blue}{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}}{2}}{a}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt58.0

      \[\leadsto \frac{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}{\color{blue}{\sqrt{a} \cdot \sqrt{a}}}\]
    9. Applied add-cube-cbrt58.0

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}\right) \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}}}{\sqrt{a} \cdot \sqrt{a}}\]
    10. Applied times-frac58.0

      \[\leadsto \color{blue}{\frac{\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}}{\sqrt{a}} \cdot \frac{\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}}{\sqrt{a}}}\]
    11. Taylor expanded around 0 63.5

      \[\leadsto \frac{\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}}{\sqrt{a}} \cdot \frac{\color{blue}{\sqrt[3]{\frac{1}{2}} \cdot e^{\frac{1}{3} \cdot \left(\left(\log -2 + \left(\log a + \log c\right)\right) - \log b\right)}}}{\sqrt{a}}\]
    12. Simplified56.1

      \[\leadsto \frac{\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}}{\sqrt{a}} \cdot \frac{\color{blue}{\sqrt[3]{e^{\log c + \log a} \cdot \frac{-2}{b}} \cdot \sqrt[3]{\frac{1}{2}}}}{\sqrt{a}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification51.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le 8.254129378667163 \cdot 10^{+18}:\\ \;\;\;\;\frac{\frac{(\left(\sqrt{\sqrt{\sqrt[3]{\left((c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_* \cdot (c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*\right) \cdot (c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{-2}{b} \cdot e^{\log c + \log a}} \cdot \sqrt[3]{\frac{1}{2}}}{\sqrt{a}} \cdot \frac{\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}}{\sqrt{a}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019104 +o rules:numerics
(FPCore (a b c)
  :name "Quadratic roots, wide range"
  :pre (and (< 4.930380657631324e-32 a 2.028240960365167e+31) (< 4.930380657631324e-32 b 2.028240960365167e+31) (< 4.930380657631324e-32 c 2.028240960365167e+31))
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))