Average Error: 34.2 → 15.1
Time: 12.6s
Precision: 64
\[\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 -1.3358786167585806 \cdot 10^{154}:\\ \;\;\;\;\frac{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2}}{a}\\ \mathbf{elif}\;b \le 1.94263717460376656 \cdot 10^{24}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-2 \cdot \frac{a \cdot c}{b}}{2}}{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 -1.3358786167585806 \cdot 10^{154}:\\
\;\;\;\;\frac{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2}}{a}\\

\mathbf{elif}\;b \le 1.94263717460376656 \cdot 10^{24}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{-2 \cdot \frac{a \cdot c}{b}}{2}}{a}\\

\end{array}
double f(double a, double b, double c) {
        double r40525 = b;
        double r40526 = -r40525;
        double r40527 = r40525 * r40525;
        double r40528 = 4.0;
        double r40529 = a;
        double r40530 = r40528 * r40529;
        double r40531 = c;
        double r40532 = r40530 * r40531;
        double r40533 = r40527 - r40532;
        double r40534 = sqrt(r40533);
        double r40535 = r40526 + r40534;
        double r40536 = 2.0;
        double r40537 = r40536 * r40529;
        double r40538 = r40535 / r40537;
        return r40538;
}

double f(double a, double b, double c) {
        double r40539 = b;
        double r40540 = -1.3358786167585806e+154;
        bool r40541 = r40539 <= r40540;
        double r40542 = 2.0;
        double r40543 = a;
        double r40544 = c;
        double r40545 = r40543 * r40544;
        double r40546 = r40545 / r40539;
        double r40547 = r40542 * r40546;
        double r40548 = 2.0;
        double r40549 = r40548 * r40539;
        double r40550 = r40547 - r40549;
        double r40551 = r40550 / r40542;
        double r40552 = r40551 / r40543;
        double r40553 = 1.9426371746037666e+24;
        bool r40554 = r40539 <= r40553;
        double r40555 = r40539 * r40539;
        double r40556 = 4.0;
        double r40557 = r40556 * r40543;
        double r40558 = r40557 * r40544;
        double r40559 = r40555 - r40558;
        double r40560 = sqrt(r40559);
        double r40561 = r40560 - r40539;
        double r40562 = r40561 / r40542;
        double r40563 = r40562 / r40543;
        double r40564 = -2.0;
        double r40565 = r40564 * r40546;
        double r40566 = r40565 / r40542;
        double r40567 = r40566 / r40543;
        double r40568 = r40554 ? r40563 : r40567;
        double r40569 = r40541 ? r40552 : r40568;
        return r40569;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if b < -1.3358786167585806e+154

    1. Initial program 64.0

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

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

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

    if -1.3358786167585806e+154 < b < 1.9426371746037666e+24

    1. Initial program 16.1

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

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

    if 1.9426371746037666e+24 < b

    1. Initial program 56.4

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.3358786167585806 \cdot 10^{154}:\\ \;\;\;\;\frac{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2}}{a}\\ \mathbf{elif}\;b \le 1.94263717460376656 \cdot 10^{24}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-2 \cdot \frac{a \cdot c}{b}}{2}}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2020046 
(FPCore (a b c)
  :name "Quadratic roots, full range"
  :precision binary64
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))