Average Error: 33.1 → 6.7
Time: 1.7m
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 -1.8719024022082672 \cdot 10^{+146}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}\\ \mathbf{elif}\;b \le 3.0396083187725924 \cdot 10^{-273}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}\\ \mathbf{elif}\;b \le 5.724613295007455 \cdot 10^{+79}:\\ \;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}}\\ \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 -1.8719024022082672 \cdot 10^{+146}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r14671881 = b;
        double r14671882 = -r14671881;
        double r14671883 = r14671881 * r14671881;
        double r14671884 = 4.0;
        double r14671885 = a;
        double r14671886 = c;
        double r14671887 = r14671885 * r14671886;
        double r14671888 = r14671884 * r14671887;
        double r14671889 = r14671883 - r14671888;
        double r14671890 = sqrt(r14671889);
        double r14671891 = r14671882 - r14671890;
        double r14671892 = 2.0;
        double r14671893 = r14671892 * r14671885;
        double r14671894 = r14671891 / r14671893;
        return r14671894;
}

double f(double a, double b, double c) {
        double r14671895 = b;
        double r14671896 = -1.8719024022082672e+146;
        bool r14671897 = r14671895 <= r14671896;
        double r14671898 = 0.5;
        double r14671899 = 4.0;
        double r14671900 = c;
        double r14671901 = r14671899 * r14671900;
        double r14671902 = a;
        double r14671903 = r14671900 / r14671895;
        double r14671904 = r14671902 * r14671903;
        double r14671905 = r14671904 - r14671895;
        double r14671906 = 2.0;
        double r14671907 = r14671905 * r14671906;
        double r14671908 = r14671901 / r14671907;
        double r14671909 = r14671898 * r14671908;
        double r14671910 = 3.0396083187725924e-273;
        bool r14671911 = r14671895 <= r14671910;
        double r14671912 = r14671895 * r14671895;
        double r14671913 = r14671902 * r14671901;
        double r14671914 = r14671912 - r14671913;
        double r14671915 = sqrt(r14671914);
        double r14671916 = r14671915 - r14671895;
        double r14671917 = r14671901 / r14671916;
        double r14671918 = r14671898 * r14671917;
        double r14671919 = 5.724613295007455e+79;
        bool r14671920 = r14671895 <= r14671919;
        double r14671921 = 1.0;
        double r14671922 = r14671906 * r14671902;
        double r14671923 = -r14671895;
        double r14671924 = r14671902 * r14671900;
        double r14671925 = r14671924 * r14671899;
        double r14671926 = r14671912 - r14671925;
        double r14671927 = sqrt(r14671926);
        double r14671928 = r14671923 - r14671927;
        double r14671929 = r14671922 / r14671928;
        double r14671930 = r14671921 / r14671929;
        double r14671931 = r14671895 / r14671902;
        double r14671932 = r14671903 - r14671931;
        double r14671933 = r14671920 ? r14671930 : r14671932;
        double r14671934 = r14671911 ? r14671918 : r14671933;
        double r14671935 = r14671897 ? r14671909 : r14671934;
        return r14671935;
}

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.1
Target20.4
Herbie6.7
\[\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 < -1.8719024022082672e+146

    1. Initial program 62.0

      \[\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. Simplified36.8

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

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

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

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

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

      \[\leadsto \frac{1}{2} \cdot \frac{4 \cdot c}{\color{blue}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}}\]
    11. Simplified1.6

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

    if -1.8719024022082672e+146 < b < 3.0396083187725924e-273

    1. Initial program 33.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 flip--33.2

      \[\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.9

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

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

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

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

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

    if 3.0396083187725924e-273 < b < 5.724613295007455e+79

    1. Initial program 8.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 *-un-lft-identity8.5

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

      \[\leadsto \frac{\left(-\color{blue}{1 \cdot b}\right) - 1 \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    5. Applied distribute-rgt-neg-in8.5

      \[\leadsto \frac{\color{blue}{1 \cdot \left(-b\right)} - 1 \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    6. Applied distribute-lft-out--8.5

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

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

    if 5.724613295007455e+79 < b

    1. Initial program 40.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.8719024022082672 \cdot 10^{+146}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}\\ \mathbf{elif}\;b \le 3.0396083187725924 \cdot 10^{-273}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}\\ \mathbf{elif}\;b \le 5.724613295007455 \cdot 10^{+79}:\\ \;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \end{array}\]

Reproduce

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