Average Error: 33.2 → 9.8
Time: 18.9s
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.3390906992477082 \cdot 10^{+154}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{2 \cdot \frac{a \cdot c}{b}}}{2}\\ \mathbf{elif}\;b \le -8.671664006593932 \cdot 10^{-208}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} - b}{a}}{2}\\ \mathbf{elif}\;b \le 8.123773458674236 \cdot 10^{+149}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{\sqrt{\mathsf{fma}\left(a, \frac{c}{\frac{-1}{4}}, b \cdot b\right)} + b}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{\left(b - \frac{a \cdot c}{b}\right) \cdot 2}}{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.3390906992477082 \cdot 10^{+154}:\\
\;\;\;\;\frac{\frac{-4 \cdot c}{2 \cdot \frac{a \cdot c}{b}}}{2}\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r2941502 = b;
        double r2941503 = -r2941502;
        double r2941504 = r2941502 * r2941502;
        double r2941505 = 4.0;
        double r2941506 = a;
        double r2941507 = c;
        double r2941508 = r2941506 * r2941507;
        double r2941509 = r2941505 * r2941508;
        double r2941510 = r2941504 - r2941509;
        double r2941511 = sqrt(r2941510);
        double r2941512 = r2941503 + r2941511;
        double r2941513 = 2.0;
        double r2941514 = r2941513 * r2941506;
        double r2941515 = r2941512 / r2941514;
        return r2941515;
}

double f(double a, double b, double c) {
        double r2941516 = b;
        double r2941517 = -1.3390906992477082e+154;
        bool r2941518 = r2941516 <= r2941517;
        double r2941519 = -4.0;
        double r2941520 = c;
        double r2941521 = r2941519 * r2941520;
        double r2941522 = 2.0;
        double r2941523 = a;
        double r2941524 = r2941523 * r2941520;
        double r2941525 = r2941524 / r2941516;
        double r2941526 = r2941522 * r2941525;
        double r2941527 = r2941521 / r2941526;
        double r2941528 = r2941527 / r2941522;
        double r2941529 = -8.671664006593932e-208;
        bool r2941530 = r2941516 <= r2941529;
        double r2941531 = r2941519 * r2941523;
        double r2941532 = r2941516 * r2941516;
        double r2941533 = fma(r2941531, r2941520, r2941532);
        double r2941534 = sqrt(r2941533);
        double r2941535 = r2941534 - r2941516;
        double r2941536 = r2941535 / r2941523;
        double r2941537 = r2941536 / r2941522;
        double r2941538 = 8.123773458674236e+149;
        bool r2941539 = r2941516 <= r2941538;
        double r2941540 = -0.25;
        double r2941541 = r2941520 / r2941540;
        double r2941542 = fma(r2941523, r2941541, r2941532);
        double r2941543 = sqrt(r2941542);
        double r2941544 = r2941543 + r2941516;
        double r2941545 = r2941521 / r2941544;
        double r2941546 = r2941545 / r2941522;
        double r2941547 = r2941516 - r2941525;
        double r2941548 = r2941547 * r2941522;
        double r2941549 = r2941521 / r2941548;
        double r2941550 = r2941549 / r2941522;
        double r2941551 = r2941539 ? r2941546 : r2941550;
        double r2941552 = r2941530 ? r2941537 : r2941551;
        double r2941553 = r2941518 ? r2941528 : r2941552;
        return r2941553;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Target

Original33.2
Target20.6
Herbie9.8
\[\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.3390906992477082e+154

    1. Initial program 60.9

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified60.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--62.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. 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.5

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

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

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

    if -1.3390906992477082e+154 < b < -8.671664006593932e-208

    1. Initial program 6.6

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

      \[\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 *-un-lft-identity6.6

      \[\leadsto \frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b}{\color{blue}{1 \cdot a}}}{2}\]
    5. Applied associate-/r*6.6

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

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

    if -8.671664006593932e-208 < b < 8.123773458674236e+149

    1. Initial program 32.1

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified32.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--32.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. Simplified16.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-identity16.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-identity16.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-identity16.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-frac16.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-frac16.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. Simplified16.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. Simplified14.8

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

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

      \[\leadsto \frac{1 \cdot \frac{-4 \cdot c}{\sqrt{\color{blue}{{b}^{2} - 4 \cdot \left(a \cdot c\right)}} + b}}{2}\]
    16. Simplified9.7

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

    if 8.123773458674236e+149 < b

    1. Initial program 62.3

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

      \[\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. Simplified38.2

      \[\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-identity38.2

      \[\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-identity38.2

      \[\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-identity38.2

      \[\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-frac38.2

      \[\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-frac38.2

      \[\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. Simplified38.2

      \[\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. Simplified38.1

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

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

      \[\leadsto \frac{1 \cdot \frac{-4 \cdot c}{\color{blue}{2 \cdot b - 2 \cdot \frac{a \cdot c}{b}}}}{2}\]
    16. Simplified6.7

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.3390906992477082 \cdot 10^{+154}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{2 \cdot \frac{a \cdot c}{b}}}{2}\\ \mathbf{elif}\;b \le -8.671664006593932 \cdot 10^{-208}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} - b}{a}}{2}\\ \mathbf{elif}\;b \le 8.123773458674236 \cdot 10^{+149}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{\sqrt{\mathsf{fma}\left(a, \frac{c}{\frac{-1}{4}}, b \cdot b\right)} + b}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{\left(b - \frac{a \cdot c}{b}\right) \cdot 2}}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019162 +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)))