Average Error: 33.8 → 8.6
Time: 17.9s
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.970010565552108757188050455448622102575 \cdot 10^{58}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le -1.018798663578592878613720979047018430442 \cdot 10^{-256}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}} \cdot \left(\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}} \cdot \sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}}\right)}{2 \cdot a}\\ \mathbf{elif}\;b \le 3.628799960716311990444092539387346352569 \cdot 10^{50}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1 \cdot 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.970010565552108757188050455448622102575 \cdot 10^{58}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

\mathbf{elif}\;b \le -1.018798663578592878613720979047018430442 \cdot 10^{-256}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}} \cdot \left(\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}} \cdot \sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}}\right)}{2 \cdot a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r60922 = b;
        double r60923 = -r60922;
        double r60924 = r60922 * r60922;
        double r60925 = 4.0;
        double r60926 = a;
        double r60927 = c;
        double r60928 = r60926 * r60927;
        double r60929 = r60925 * r60928;
        double r60930 = r60924 - r60929;
        double r60931 = sqrt(r60930);
        double r60932 = r60923 - r60931;
        double r60933 = 2.0;
        double r60934 = r60933 * r60926;
        double r60935 = r60932 / r60934;
        return r60935;
}

double f(double a, double b, double c) {
        double r60936 = b;
        double r60937 = -1.9700105655521088e+58;
        bool r60938 = r60936 <= r60937;
        double r60939 = -1.0;
        double r60940 = c;
        double r60941 = r60940 / r60936;
        double r60942 = r60939 * r60941;
        double r60943 = -1.0187986635785929e-256;
        bool r60944 = r60936 <= r60943;
        double r60945 = a;
        double r60946 = r60936 * r60936;
        double r60947 = 4.0;
        double r60948 = r60947 * r60940;
        double r60949 = r60945 * r60948;
        double r60950 = r60946 - r60949;
        double r60951 = sqrt(r60950);
        double r60952 = r60951 - r60936;
        double r60953 = r60952 / r60948;
        double r60954 = r60945 / r60953;
        double r60955 = cbrt(r60954);
        double r60956 = r60955 * r60955;
        double r60957 = r60955 * r60956;
        double r60958 = 2.0;
        double r60959 = r60958 * r60945;
        double r60960 = r60957 / r60959;
        double r60961 = 3.628799960716312e+50;
        bool r60962 = r60936 <= r60961;
        double r60963 = -r60936;
        double r60964 = r60963 - r60951;
        double r60965 = r60964 / r60959;
        double r60966 = r60939 * r60936;
        double r60967 = r60966 / r60945;
        double r60968 = r60962 ? r60965 : r60967;
        double r60969 = r60944 ? r60960 : r60968;
        double r60970 = r60938 ? r60942 : r60969;
        return r60970;
}

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.7
Herbie8.6
\[\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 < -1.9700105655521088e+58

    1. Initial program 57.5

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

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

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

    if -1.9700105655521088e+58 < b < -1.0187986635785929e-256

    1. Initial program 31.6

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

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

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

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

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

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

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

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

    if -1.0187986635785929e-256 < b < 3.628799960716312e+50

    1. Initial program 10.0

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

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

    if 3.628799960716312e+50 < b

    1. Initial program 38.2

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

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.970010565552108757188050455448622102575 \cdot 10^{58}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le -1.018798663578592878613720979047018430442 \cdot 10^{-256}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}} \cdot \left(\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}} \cdot \sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}}\right)}{2 \cdot a}\\ \mathbf{elif}\;b \le 3.628799960716311990444092539387346352569 \cdot 10^{50}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1 \cdot b}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019179 
(FPCore (a b c)
  :name "quadm (p42, negative)"

  :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)))