Average Error: 34.5 → 10.1
Time: 10.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 -4.28391183709975701 \cdot 10^{106}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le -1.16764411094466422 \cdot 10^{-83}:\\ \;\;\;\;\frac{\frac{1}{\sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{\frac{2 \cdot a}{\frac{4 \cdot \left(a \cdot c\right)}{\sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}}\\ \mathbf{elif}\;b \le -5.52775192595066085 \cdot 10^{-141}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 3.59909590090097915 \cdot 10^{53}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-2 \cdot b}{2 \cdot 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 -4.28391183709975701 \cdot 10^{106}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

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

\mathbf{elif}\;b \le -5.52775192595066085 \cdot 10^{-141}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r151003 = b;
        double r151004 = -r151003;
        double r151005 = r151003 * r151003;
        double r151006 = 4.0;
        double r151007 = a;
        double r151008 = c;
        double r151009 = r151007 * r151008;
        double r151010 = r151006 * r151009;
        double r151011 = r151005 - r151010;
        double r151012 = sqrt(r151011);
        double r151013 = r151004 - r151012;
        double r151014 = 2.0;
        double r151015 = r151014 * r151007;
        double r151016 = r151013 / r151015;
        return r151016;
}

double f(double a, double b, double c) {
        double r151017 = b;
        double r151018 = -4.283911837099757e+106;
        bool r151019 = r151017 <= r151018;
        double r151020 = -1.0;
        double r151021 = c;
        double r151022 = r151021 / r151017;
        double r151023 = r151020 * r151022;
        double r151024 = -1.1676441109446642e-83;
        bool r151025 = r151017 <= r151024;
        double r151026 = 1.0;
        double r151027 = r151017 * r151017;
        double r151028 = 4.0;
        double r151029 = a;
        double r151030 = r151029 * r151021;
        double r151031 = r151028 * r151030;
        double r151032 = r151027 - r151031;
        double r151033 = sqrt(r151032);
        double r151034 = r151033 - r151017;
        double r151035 = sqrt(r151034);
        double r151036 = r151026 / r151035;
        double r151037 = 2.0;
        double r151038 = r151037 * r151029;
        double r151039 = r151031 / r151035;
        double r151040 = r151038 / r151039;
        double r151041 = r151036 / r151040;
        double r151042 = -5.527751925950661e-141;
        bool r151043 = r151017 <= r151042;
        double r151044 = 3.599095900900979e+53;
        bool r151045 = r151017 <= r151044;
        double r151046 = -r151017;
        double r151047 = r151046 - r151033;
        double r151048 = r151047 / r151038;
        double r151049 = -2.0;
        double r151050 = r151049 * r151017;
        double r151051 = r151050 / r151038;
        double r151052 = r151045 ? r151048 : r151051;
        double r151053 = r151043 ? r151023 : r151052;
        double r151054 = r151025 ? r151041 : r151053;
        double r151055 = r151019 ? r151023 : r151054;
        return r151055;
}

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

Original34.5
Target20.8
Herbie10.1
\[\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 4 regimes
  2. if b < -4.283911837099757e+106 or -1.1676441109446642e-83 < b < -5.527751925950661e-141

    1. Initial program 54.5

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

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

    if -4.283911837099757e+106 < b < -1.1676441109446642e-83

    1. Initial program 42.9

      \[\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--42.9

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

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

      \[\leadsto \frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\color{blue}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{2 \cdot a}\]
    6. Using strategy rm
    7. Applied add-sqr-sqrt15.3

      \[\leadsto \frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\color{blue}{\sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b} \cdot \sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}}{2 \cdot a}\]
    8. Applied *-un-lft-identity15.3

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

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

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

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

    if -5.527751925950661e-141 < b < 3.599095900900979e+53

    1. Initial program 12.0

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

    if 3.599095900900979e+53 < b

    1. Initial program 38.5

      \[\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--62.0

      \[\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. Simplified61.3

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -4.28391183709975701 \cdot 10^{106}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le -1.16764411094466422 \cdot 10^{-83}:\\ \;\;\;\;\frac{\frac{1}{\sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{\frac{2 \cdot a}{\frac{4 \cdot \left(a \cdot c\right)}{\sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}}\\ \mathbf{elif}\;b \le -5.52775192595066085 \cdot 10^{-141}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 3.59909590090097915 \cdot 10^{53}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-2 \cdot b}{2 \cdot a}\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< b 0.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)))