Average Error: 28.6 → 16.5
Time: 16.6s
Precision: 64
\[1.0536712127723509 \cdot 10^{-08} \lt a \lt 94906265.62425156 \land 1.0536712127723509 \cdot 10^{-08} \lt b \lt 94906265.62425156 \land 1.0536712127723509 \cdot 10^{-08} \lt c \lt 94906265.62425156\]
\[\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 192.9393170232888:\\ \;\;\;\;\frac{\frac{\frac{\sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} \cdot \mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right) - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(b, b + \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}, \mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)\right)}}{a}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{\left(a \cdot \frac{c}{b}\right) \cdot -2}{\sqrt{a}}}{\sqrt{a}}}{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 192.9393170232888:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} \cdot \mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right) - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(b, b + \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}, \mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)\right)}}{a}}{2}\\

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

\end{array}
double f(double a, double b, double c) {
        double r1371339 = b;
        double r1371340 = -r1371339;
        double r1371341 = r1371339 * r1371339;
        double r1371342 = 4.0;
        double r1371343 = a;
        double r1371344 = r1371342 * r1371343;
        double r1371345 = c;
        double r1371346 = r1371344 * r1371345;
        double r1371347 = r1371341 - r1371346;
        double r1371348 = sqrt(r1371347);
        double r1371349 = r1371340 + r1371348;
        double r1371350 = 2.0;
        double r1371351 = r1371350 * r1371343;
        double r1371352 = r1371349 / r1371351;
        return r1371352;
}

double f(double a, double b, double c) {
        double r1371353 = b;
        double r1371354 = 192.9393170232888;
        bool r1371355 = r1371353 <= r1371354;
        double r1371356 = -4.0;
        double r1371357 = a;
        double r1371358 = r1371356 * r1371357;
        double r1371359 = c;
        double r1371360 = r1371353 * r1371353;
        double r1371361 = fma(r1371358, r1371359, r1371360);
        double r1371362 = sqrt(r1371361);
        double r1371363 = r1371362 * r1371361;
        double r1371364 = r1371360 * r1371353;
        double r1371365 = r1371363 - r1371364;
        double r1371366 = r1371353 + r1371362;
        double r1371367 = fma(r1371353, r1371366, r1371361);
        double r1371368 = r1371365 / r1371367;
        double r1371369 = r1371368 / r1371357;
        double r1371370 = 2.0;
        double r1371371 = r1371369 / r1371370;
        double r1371372 = r1371359 / r1371353;
        double r1371373 = r1371357 * r1371372;
        double r1371374 = -2.0;
        double r1371375 = r1371373 * r1371374;
        double r1371376 = sqrt(r1371357);
        double r1371377 = r1371375 / r1371376;
        double r1371378 = r1371377 / r1371376;
        double r1371379 = r1371378 / r1371370;
        double r1371380 = r1371355 ? r1371371 : r1371379;
        return r1371380;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Split input into 2 regimes
  2. if b < 192.9393170232888

    1. Initial program 15.8

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

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -4\right) \cdot c\right)} - b}{a}}{2}}\]
    3. Using strategy rm
    4. Applied flip3--15.8

      \[\leadsto \frac{\frac{\color{blue}{\frac{{\left(\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -4\right) \cdot c\right)}\right)}^{3} - {b}^{3}}{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -4\right) \cdot c\right)} \cdot \sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -4\right) \cdot c\right)} + \left(b \cdot b + \sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -4\right) \cdot c\right)} \cdot b\right)}}}{a}}{2}\]
    5. Simplified15.2

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

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

    if 192.9393170232888 < b

    1. Initial program 35.1

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

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

      \[\leadsto \frac{\frac{\color{blue}{-2 \cdot \frac{a \cdot c}{b}}}{a}}{2}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity17.2

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

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

      \[\leadsto \frac{\frac{-2 \cdot \left(\color{blue}{a} \cdot \frac{c}{b}\right)}{a}}{2}\]
    8. Using strategy rm
    9. Applied add-sqr-sqrt17.2

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

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

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

Reproduce

herbie shell --seed 2019158 +o rules:numerics
(FPCore (a b c)
  :name "Quadratic roots, narrow range"
  :pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))