Average Error: 33.5 → 7.3
Time: 31.5s
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 -6.175442848374641 \cdot 10^{+103}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -2.5616198420313977 \cdot 10^{-226}:\\ \;\;\;\;\frac{4}{\sqrt{c \cdot \left(-4 \cdot a\right) + b \cdot b} - b} \cdot \left(\frac{1}{2} \cdot c\right)\\ \mathbf{elif}\;b \le 1.8091015183831773 \cdot 10^{+43}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \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 -6.175442848374641 \cdot 10^{+103}:\\
\;\;\;\;-\frac{c}{b}\\

\mathbf{elif}\;b \le -2.5616198420313977 \cdot 10^{-226}:\\
\;\;\;\;\frac{4}{\sqrt{c \cdot \left(-4 \cdot a\right) + b \cdot b} - b} \cdot \left(\frac{1}{2} \cdot c\right)\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r9899698 = b;
        double r9899699 = -r9899698;
        double r9899700 = r9899698 * r9899698;
        double r9899701 = 4.0;
        double r9899702 = a;
        double r9899703 = c;
        double r9899704 = r9899702 * r9899703;
        double r9899705 = r9899701 * r9899704;
        double r9899706 = r9899700 - r9899705;
        double r9899707 = sqrt(r9899706);
        double r9899708 = r9899699 - r9899707;
        double r9899709 = 2.0;
        double r9899710 = r9899709 * r9899702;
        double r9899711 = r9899708 / r9899710;
        return r9899711;
}

double f(double a, double b, double c) {
        double r9899712 = b;
        double r9899713 = -6.175442848374641e+103;
        bool r9899714 = r9899712 <= r9899713;
        double r9899715 = c;
        double r9899716 = r9899715 / r9899712;
        double r9899717 = -r9899716;
        double r9899718 = -2.5616198420313977e-226;
        bool r9899719 = r9899712 <= r9899718;
        double r9899720 = 4.0;
        double r9899721 = -4.0;
        double r9899722 = a;
        double r9899723 = r9899721 * r9899722;
        double r9899724 = r9899715 * r9899723;
        double r9899725 = r9899712 * r9899712;
        double r9899726 = r9899724 + r9899725;
        double r9899727 = sqrt(r9899726);
        double r9899728 = r9899727 - r9899712;
        double r9899729 = r9899720 / r9899728;
        double r9899730 = 0.5;
        double r9899731 = r9899730 * r9899715;
        double r9899732 = r9899729 * r9899731;
        double r9899733 = 1.8091015183831773e+43;
        bool r9899734 = r9899712 <= r9899733;
        double r9899735 = -r9899712;
        double r9899736 = r9899722 * r9899715;
        double r9899737 = r9899736 * r9899720;
        double r9899738 = r9899725 - r9899737;
        double r9899739 = sqrt(r9899738);
        double r9899740 = r9899735 - r9899739;
        double r9899741 = 2.0;
        double r9899742 = r9899741 * r9899722;
        double r9899743 = r9899740 / r9899742;
        double r9899744 = r9899712 / r9899722;
        double r9899745 = r9899716 - r9899744;
        double r9899746 = r9899734 ? r9899743 : r9899745;
        double r9899747 = r9899719 ? r9899732 : r9899746;
        double r9899748 = r9899714 ? r9899717 : r9899747;
        return r9899748;
}

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

Target

Original33.5
Target21.1
Herbie7.3
\[\begin{array}{l} \mathbf{if}\;b \lt 0:\\ \;\;\;\;\frac{c}{a \cdot \frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}}\\ \mathbf{else}:\\ \;\;\;\;\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 < -6.175442848374641e+103

    1. Initial program 59.2

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Taylor expanded around -inf 2.8

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
    3. Simplified2.8

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

    if -6.175442848374641e+103 < b < -2.5616198420313977e-226

    1. Initial program 35.4

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied flip--35.5

      \[\leadsto \frac{\color{blue}{\frac{\left(-b\right) \cdot \left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}{2 \cdot a}\]
    4. Applied associate-/l/39.6

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

      \[\leadsto \frac{\color{blue}{\left(a \cdot c\right) \cdot 4}}{\left(2 \cdot a\right) \cdot \left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}\]
    6. Using strategy rm
    7. Applied times-frac15.9

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

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

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

    if -2.5616198420313977e-226 < b < 1.8091015183831773e+43

    1. Initial program 10.6

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

    if 1.8091015183831773e+43 < b

    1. Initial program 36.3

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Taylor expanded around inf 5.7

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -6.175442848374641 \cdot 10^{+103}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -2.5616198420313977 \cdot 10^{-226}:\\ \;\;\;\;\frac{4}{\sqrt{c \cdot \left(-4 \cdot a\right) + b \cdot b} - b} \cdot \left(\frac{1}{2} \cdot c\right)\\ \mathbf{elif}\;b \le 1.8091015183831773 \cdot 10^{+43}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019120 
(FPCore (a b c)
  :name "The quadratic formula (r2)"

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

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