Average Error: 33.8 → 10.2
Time: 19.2s
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 -2.569494919068124572690421335939486791404 \cdot 10^{-64}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 2.8653816703769607550753035783606354728 \cdot 10^{117}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \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 -2.569494919068124572690421335939486791404 \cdot 10^{-64}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r3637819 = b;
        double r3637820 = -r3637819;
        double r3637821 = r3637819 * r3637819;
        double r3637822 = 4.0;
        double r3637823 = a;
        double r3637824 = c;
        double r3637825 = r3637823 * r3637824;
        double r3637826 = r3637822 * r3637825;
        double r3637827 = r3637821 - r3637826;
        double r3637828 = sqrt(r3637827);
        double r3637829 = r3637820 - r3637828;
        double r3637830 = 2.0;
        double r3637831 = r3637830 * r3637823;
        double r3637832 = r3637829 / r3637831;
        return r3637832;
}

double f(double a, double b, double c) {
        double r3637833 = b;
        double r3637834 = -2.5694949190681246e-64;
        bool r3637835 = r3637833 <= r3637834;
        double r3637836 = -1.0;
        double r3637837 = c;
        double r3637838 = r3637837 / r3637833;
        double r3637839 = r3637836 * r3637838;
        double r3637840 = 2.865381670376961e+117;
        bool r3637841 = r3637833 <= r3637840;
        double r3637842 = -r3637833;
        double r3637843 = r3637833 * r3637833;
        double r3637844 = a;
        double r3637845 = 4.0;
        double r3637846 = r3637837 * r3637845;
        double r3637847 = r3637844 * r3637846;
        double r3637848 = r3637843 - r3637847;
        double r3637849 = sqrt(r3637848);
        double r3637850 = r3637842 - r3637849;
        double r3637851 = 2.0;
        double r3637852 = r3637844 * r3637851;
        double r3637853 = r3637850 / r3637852;
        double r3637854 = r3637833 / r3637844;
        double r3637855 = r3637836 * r3637854;
        double r3637856 = r3637841 ? r3637853 : r3637855;
        double r3637857 = r3637835 ? r3637839 : r3637856;
        return r3637857;
}

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.8
Target20.9
Herbie10.2
\[\begin{array}{l} \mathbf{if}\;b \lt 0.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 3 regimes
  2. if b < -2.5694949190681246e-64

    1. Initial program 53.0

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

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

    if -2.5694949190681246e-64 < b < 2.865381670376961e+117

    1. Initial program 13.1

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

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

      \[\leadsto \frac{1}{\color{blue}{1 \cdot \frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    6. Applied add-cube-cbrt13.2

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

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

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

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

    if 2.865381670376961e+117 < b

    1. Initial program 52.1

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.569494919068124572690421335939486791404 \cdot 10^{-64}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 2.8653816703769607550753035783606354728 \cdot 10^{117}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{b}{a}\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))

  (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))