Average Error: 34.0 → 8.4
Time: 22.3s
Precision: 64
\[\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -1.3388522088846754 \cdot 10^{+154}:\\ \;\;\;\;\frac{\frac{c}{\frac{a \cdot c}{b} \cdot 2} \cdot \frac{-4 \cdot a}{a}}{2}\\ \mathbf{elif}\;b \le 8.65932037201788 \cdot 10^{-309}:\\ \;\;\;\;\frac{\frac{1}{a} \cdot \left(\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b\right)}{2}\\ \mathbf{elif}\;b \le 3.421102533893443 \cdot 10^{+145}:\\ \;\;\;\;\frac{\frac{c}{\sqrt{\mathsf{fma}\left(c, -4 \cdot a, b \cdot b\right)} + b} \cdot \frac{-4 \cdot a}{a}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(c \cdot \frac{\frac{1}{2}}{b}\right) \cdot \frac{-4 \cdot a}{a}}{2}\\ \end{array}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le -1.3388522088846754 \cdot 10^{+154}:\\
\;\;\;\;\frac{\frac{c}{\frac{a \cdot c}{b} \cdot 2} \cdot \frac{-4 \cdot a}{a}}{2}\\

\mathbf{elif}\;b \le 8.65932037201788 \cdot 10^{-309}:\\
\;\;\;\;\frac{\frac{1}{a} \cdot \left(\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b\right)}{2}\\

\mathbf{elif}\;b \le 3.421102533893443 \cdot 10^{+145}:\\
\;\;\;\;\frac{\frac{c}{\sqrt{\mathsf{fma}\left(c, -4 \cdot a, b \cdot b\right)} + b} \cdot \frac{-4 \cdot a}{a}}{2}\\

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

\end{array}
double f(double a, double b, double c) {
        double r3107427 = b;
        double r3107428 = -r3107427;
        double r3107429 = r3107427 * r3107427;
        double r3107430 = 4.0;
        double r3107431 = a;
        double r3107432 = c;
        double r3107433 = r3107431 * r3107432;
        double r3107434 = r3107430 * r3107433;
        double r3107435 = r3107429 - r3107434;
        double r3107436 = sqrt(r3107435);
        double r3107437 = r3107428 + r3107436;
        double r3107438 = 2.0;
        double r3107439 = r3107438 * r3107431;
        double r3107440 = r3107437 / r3107439;
        return r3107440;
}

double f(double a, double b, double c) {
        double r3107441 = b;
        double r3107442 = -1.3388522088846754e+154;
        bool r3107443 = r3107441 <= r3107442;
        double r3107444 = c;
        double r3107445 = a;
        double r3107446 = r3107445 * r3107444;
        double r3107447 = r3107446 / r3107441;
        double r3107448 = 2.0;
        double r3107449 = r3107447 * r3107448;
        double r3107450 = r3107444 / r3107449;
        double r3107451 = -4.0;
        double r3107452 = r3107451 * r3107445;
        double r3107453 = r3107452 / r3107445;
        double r3107454 = r3107450 * r3107453;
        double r3107455 = r3107454 / r3107448;
        double r3107456 = 8.65932037201788e-309;
        bool r3107457 = r3107441 <= r3107456;
        double r3107458 = 1.0;
        double r3107459 = r3107458 / r3107445;
        double r3107460 = r3107441 * r3107441;
        double r3107461 = fma(r3107446, r3107451, r3107460);
        double r3107462 = sqrt(r3107461);
        double r3107463 = r3107462 - r3107441;
        double r3107464 = r3107459 * r3107463;
        double r3107465 = r3107464 / r3107448;
        double r3107466 = 3.421102533893443e+145;
        bool r3107467 = r3107441 <= r3107466;
        double r3107468 = fma(r3107444, r3107452, r3107460);
        double r3107469 = sqrt(r3107468);
        double r3107470 = r3107469 + r3107441;
        double r3107471 = r3107444 / r3107470;
        double r3107472 = r3107471 * r3107453;
        double r3107473 = r3107472 / r3107448;
        double r3107474 = 0.5;
        double r3107475 = r3107474 / r3107441;
        double r3107476 = r3107444 * r3107475;
        double r3107477 = r3107476 * r3107453;
        double r3107478 = r3107477 / r3107448;
        double r3107479 = r3107467 ? r3107473 : r3107478;
        double r3107480 = r3107457 ? r3107465 : r3107479;
        double r3107481 = r3107443 ? r3107455 : r3107480;
        return r3107481;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Target

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

Derivation

  1. Split input into 4 regimes
  2. if b < -1.3388522088846754e+154

    1. Initial program 61.0

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

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

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

      \[\leadsto \frac{\frac{\frac{\color{blue}{\mathsf{fma}\left(a \cdot c, -4, 0\right)}}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{a}}{2}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity62.5

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{\color{blue}{1 \cdot a}}}{2}\]
    8. Applied *-un-lft-identity62.5

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\color{blue}{1 \cdot \left(\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b\right)}}}{1 \cdot a}}{2}\]
    9. Applied *-un-lft-identity62.5

      \[\leadsto \frac{\frac{\frac{\color{blue}{1 \cdot \mathsf{fma}\left(a \cdot c, -4, 0\right)}}{1 \cdot \left(\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b\right)}}{1 \cdot a}}{2}\]
    10. Applied times-frac62.5

      \[\leadsto \frac{\frac{\color{blue}{\frac{1}{1} \cdot \frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}}{1 \cdot a}}{2}\]
    11. Applied times-frac62.5

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

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

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

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

    if -1.3388522088846754e+154 < b < 8.65932037201788e-309

    1. Initial program 8.1

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

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

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

    if 8.65932037201788e-309 < b < 3.421102533893443e+145

    1. Initial program 35.1

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

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

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

      \[\leadsto \frac{\frac{\frac{\color{blue}{\mathsf{fma}\left(a \cdot c, -4, 0\right)}}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{a}}{2}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity15.7

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{\color{blue}{1 \cdot a}}}{2}\]
    8. Applied *-un-lft-identity15.7

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\color{blue}{1 \cdot \left(\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b\right)}}}{1 \cdot a}}{2}\]
    9. Applied *-un-lft-identity15.7

      \[\leadsto \frac{\frac{\frac{\color{blue}{1 \cdot \mathsf{fma}\left(a \cdot c, -4, 0\right)}}{1 \cdot \left(\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b\right)}}{1 \cdot a}}{2}\]
    10. Applied times-frac15.7

      \[\leadsto \frac{\frac{\color{blue}{\frac{1}{1} \cdot \frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}}{1 \cdot a}}{2}\]
    11. Applied times-frac15.7

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

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

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

    if 3.421102533893443e+145 < b

    1. Initial program 61.9

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

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

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

      \[\leadsto \frac{\frac{\frac{\color{blue}{\mathsf{fma}\left(a \cdot c, -4, 0\right)}}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{a}}{2}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity36.8

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{\color{blue}{1 \cdot a}}}{2}\]
    8. Applied *-un-lft-identity36.8

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\color{blue}{1 \cdot \left(\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b\right)}}}{1 \cdot a}}{2}\]
    9. Applied *-un-lft-identity36.8

      \[\leadsto \frac{\frac{\frac{\color{blue}{1 \cdot \mathsf{fma}\left(a \cdot c, -4, 0\right)}}{1 \cdot \left(\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b\right)}}{1 \cdot a}}{2}\]
    10. Applied times-frac36.8

      \[\leadsto \frac{\frac{\color{blue}{\frac{1}{1} \cdot \frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}}{1 \cdot a}}{2}\]
    11. Applied times-frac36.8

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

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

      \[\leadsto \frac{1 \cdot \color{blue}{\left(\frac{c}{b + \sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}} \cdot \frac{a \cdot -4}{a}\right)}}{2}\]
    14. Using strategy rm
    15. Applied div-inv36.3

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.3388522088846754 \cdot 10^{+154}:\\ \;\;\;\;\frac{\frac{c}{\frac{a \cdot c}{b} \cdot 2} \cdot \frac{-4 \cdot a}{a}}{2}\\ \mathbf{elif}\;b \le 8.65932037201788 \cdot 10^{-309}:\\ \;\;\;\;\frac{\frac{1}{a} \cdot \left(\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b\right)}{2}\\ \mathbf{elif}\;b \le 3.421102533893443 \cdot 10^{+145}:\\ \;\;\;\;\frac{\frac{c}{\sqrt{\mathsf{fma}\left(c, -4 \cdot a, b \cdot b\right)} + b} \cdot \frac{-4 \cdot a}{a}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(c \cdot \frac{\frac{1}{2}}{b}\right) \cdot \frac{-4 \cdot a}{a}}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019168 +o rules:numerics
(FPCore (a b c)
  :name "quadp (p42, positive)"

  :herbie-target
  (if (< b 0) (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))))

  (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))