Average Error: 33.2 → 8.9
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 -9.44750035307145 \cdot 10^{+99}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -9.715316061514381 \cdot 10^{-195}:\\ \;\;\;\;-\frac{\frac{\frac{a \cdot c}{\frac{-1}{2}}}{a}}{\left(-b\right) + \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}\\ \mathbf{elif}\;b \le 4.716596953029048 \cdot 10^{+90}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{a \cdot 2}\\ \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 -9.44750035307145 \cdot 10^{+99}:\\
\;\;\;\;-\frac{c}{b}\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r11582161 = b;
        double r11582162 = -r11582161;
        double r11582163 = r11582161 * r11582161;
        double r11582164 = 4.0;
        double r11582165 = a;
        double r11582166 = c;
        double r11582167 = r11582165 * r11582166;
        double r11582168 = r11582164 * r11582167;
        double r11582169 = r11582163 - r11582168;
        double r11582170 = sqrt(r11582169);
        double r11582171 = r11582162 - r11582170;
        double r11582172 = 2.0;
        double r11582173 = r11582172 * r11582165;
        double r11582174 = r11582171 / r11582173;
        return r11582174;
}

double f(double a, double b, double c) {
        double r11582175 = b;
        double r11582176 = -9.44750035307145e+99;
        bool r11582177 = r11582175 <= r11582176;
        double r11582178 = c;
        double r11582179 = r11582178 / r11582175;
        double r11582180 = -r11582179;
        double r11582181 = -9.715316061514381e-195;
        bool r11582182 = r11582175 <= r11582181;
        double r11582183 = a;
        double r11582184 = r11582183 * r11582178;
        double r11582185 = -0.5;
        double r11582186 = r11582184 / r11582185;
        double r11582187 = r11582186 / r11582183;
        double r11582188 = -r11582175;
        double r11582189 = r11582175 * r11582175;
        double r11582190 = 4.0;
        double r11582191 = r11582184 * r11582190;
        double r11582192 = r11582189 - r11582191;
        double r11582193 = sqrt(r11582192);
        double r11582194 = r11582188 + r11582193;
        double r11582195 = r11582187 / r11582194;
        double r11582196 = -r11582195;
        double r11582197 = 4.716596953029048e+90;
        bool r11582198 = r11582175 <= r11582197;
        double r11582199 = r11582188 - r11582193;
        double r11582200 = 2.0;
        double r11582201 = r11582183 * r11582200;
        double r11582202 = r11582199 / r11582201;
        double r11582203 = r11582175 / r11582183;
        double r11582204 = r11582179 - r11582203;
        double r11582205 = r11582198 ? r11582202 : r11582204;
        double r11582206 = r11582182 ? r11582196 : r11582205;
        double r11582207 = r11582177 ? r11582180 : r11582206;
        return r11582207;
}

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.2
Target20.1
Herbie8.9
\[\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 < -9.44750035307145e+99

    1. Initial program 58.3

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

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

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

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

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

    if -9.44750035307145e+99 < b < -9.715316061514381e-195

    1. Initial program 37.2

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

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

      \[\leadsto \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)}}} \cdot \frac{1}{2 \cdot a}\]
    6. Applied associate-*l/37.4

      \[\leadsto \color{blue}{\frac{\left(\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)}\right) \cdot \frac{1}{2 \cdot a}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\]
    7. Simplified15.3

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

    if -9.715316061514381e-195 < b < 4.716596953029048e+90

    1. Initial program 11.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 div-inv11.2

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

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

    if 4.716596953029048e+90 < b

    1. Initial program 42.2

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -9.44750035307145 \cdot 10^{+99}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -9.715316061514381 \cdot 10^{-195}:\\ \;\;\;\;-\frac{\frac{\frac{a \cdot c}{\frac{-1}{2}}}{a}}{\left(-b\right) + \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}\\ \mathbf{elif}\;b \le 4.716596953029048 \cdot 10^{+90}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019112 +o rules:numerics
(FPCore (a b c)
  :name "quadm (p42, negative)"

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