Average Error: 33.6 → 7.8
Time: 28.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 -3.8260933955440565 \cdot 10^{-16}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -1.0403213044374248 \cdot 10^{-202}:\\ \;\;\;\;\frac{c}{\frac{2 \cdot a}{\frac{a \cdot 4}{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - b}}}\\ \mathbf{elif}\;b \le 4.738941069295542 \cdot 10^{+124}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}}{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 -3.8260933955440565 \cdot 10^{-16}:\\
\;\;\;\;-\frac{c}{b}\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r4361757 = b;
        double r4361758 = -r4361757;
        double r4361759 = r4361757 * r4361757;
        double r4361760 = 4.0;
        double r4361761 = a;
        double r4361762 = c;
        double r4361763 = r4361761 * r4361762;
        double r4361764 = r4361760 * r4361763;
        double r4361765 = r4361759 - r4361764;
        double r4361766 = sqrt(r4361765);
        double r4361767 = r4361758 - r4361766;
        double r4361768 = 2.0;
        double r4361769 = r4361768 * r4361761;
        double r4361770 = r4361767 / r4361769;
        return r4361770;
}

double f(double a, double b, double c) {
        double r4361771 = b;
        double r4361772 = -3.8260933955440565e-16;
        bool r4361773 = r4361771 <= r4361772;
        double r4361774 = c;
        double r4361775 = r4361774 / r4361771;
        double r4361776 = -r4361775;
        double r4361777 = -1.0403213044374248e-202;
        bool r4361778 = r4361771 <= r4361777;
        double r4361779 = 2.0;
        double r4361780 = a;
        double r4361781 = r4361779 * r4361780;
        double r4361782 = 4.0;
        double r4361783 = r4361780 * r4361782;
        double r4361784 = r4361771 * r4361771;
        double r4361785 = r4361783 * r4361774;
        double r4361786 = r4361784 - r4361785;
        double r4361787 = sqrt(r4361786);
        double r4361788 = r4361787 - r4361771;
        double r4361789 = r4361783 / r4361788;
        double r4361790 = r4361781 / r4361789;
        double r4361791 = r4361774 / r4361790;
        double r4361792 = 4.738941069295542e+124;
        bool r4361793 = r4361771 <= r4361792;
        double r4361794 = -r4361771;
        double r4361795 = r4361774 * r4361780;
        double r4361796 = r4361782 * r4361795;
        double r4361797 = r4361784 - r4361796;
        double r4361798 = sqrt(r4361797);
        double r4361799 = r4361794 - r4361798;
        double r4361800 = r4361799 / r4361781;
        double r4361801 = r4361771 / r4361780;
        double r4361802 = r4361775 - r4361801;
        double r4361803 = r4361793 ? r4361800 : r4361802;
        double r4361804 = r4361778 ? r4361791 : r4361803;
        double r4361805 = r4361773 ? r4361776 : r4361804;
        return r4361805;
}

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.6
Target20.8
Herbie7.8
\[\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 < -3.8260933955440565e-16

    1. Initial program 54.0

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

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

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

    if -3.8260933955440565e-16 < b < -1.0403213044374248e-202

    1. Initial program 28.6

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

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

      \[\leadsto \frac{\left(-b\right) - \color{blue}{\sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}} \cdot \sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}{2 \cdot a}\]
    5. Using strategy rm
    6. Applied flip--29.0

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

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

      \[\leadsto \frac{\frac{c \cdot \left(4 \cdot a\right)}{\color{blue}{\sqrt{b \cdot b - c \cdot \left(4 \cdot a\right)} - b}}}{2 \cdot a}\]
    9. Using strategy rm
    10. Applied *-un-lft-identity17.5

      \[\leadsto \frac{\frac{c \cdot \left(4 \cdot a\right)}{\color{blue}{1 \cdot \left(\sqrt{b \cdot b - c \cdot \left(4 \cdot a\right)} - b\right)}}}{2 \cdot a}\]
    11. Applied times-frac13.0

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

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

    if -1.0403213044374248e-202 < b < 4.738941069295542e+124

    1. Initial program 10.6

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

    if 4.738941069295542e+124 < b

    1. Initial program 50.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -3.8260933955440565 \cdot 10^{-16}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -1.0403213044374248 \cdot 10^{-202}:\\ \;\;\;\;\frac{c}{\frac{2 \cdot a}{\frac{a \cdot 4}{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - b}}}\\ \mathbf{elif}\;b \le 4.738941069295542 \cdot 10^{+124}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \end{array}\]

Reproduce

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