Average Error: 33.2 → 8.9
Time: 48.8s
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{1}{2 \cdot a} \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}\right)\\ \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{1}{2 \cdot a} \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}\right)\\

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

\end{array}
double f(double a, double b, double c) {
        double r4683358 = b;
        double r4683359 = -r4683358;
        double r4683360 = r4683358 * r4683358;
        double r4683361 = 4.0;
        double r4683362 = a;
        double r4683363 = c;
        double r4683364 = r4683362 * r4683363;
        double r4683365 = r4683361 * r4683364;
        double r4683366 = r4683360 - r4683365;
        double r4683367 = sqrt(r4683366);
        double r4683368 = r4683359 - r4683367;
        double r4683369 = 2.0;
        double r4683370 = r4683369 * r4683362;
        double r4683371 = r4683368 / r4683370;
        return r4683371;
}

double f(double a, double b, double c) {
        double r4683372 = b;
        double r4683373 = -9.44750035307145e+99;
        bool r4683374 = r4683372 <= r4683373;
        double r4683375 = c;
        double r4683376 = r4683375 / r4683372;
        double r4683377 = -r4683376;
        double r4683378 = -9.715316061514381e-195;
        bool r4683379 = r4683372 <= r4683378;
        double r4683380 = a;
        double r4683381 = r4683380 * r4683375;
        double r4683382 = -0.5;
        double r4683383 = r4683381 / r4683382;
        double r4683384 = r4683383 / r4683380;
        double r4683385 = -r4683372;
        double r4683386 = r4683372 * r4683372;
        double r4683387 = 4.0;
        double r4683388 = r4683381 * r4683387;
        double r4683389 = r4683386 - r4683388;
        double r4683390 = sqrt(r4683389);
        double r4683391 = r4683385 + r4683390;
        double r4683392 = r4683384 / r4683391;
        double r4683393 = -r4683392;
        double r4683394 = 4.716596953029048e+90;
        bool r4683395 = r4683372 <= r4683394;
        double r4683396 = 1.0;
        double r4683397 = 2.0;
        double r4683398 = r4683397 * r4683380;
        double r4683399 = r4683396 / r4683398;
        double r4683400 = r4683385 - r4683390;
        double r4683401 = r4683399 * r4683400;
        double r4683402 = r4683372 / r4683380;
        double r4683403 = r4683376 - r4683402;
        double r4683404 = r4683395 ? r4683401 : r4683403;
        double r4683405 = r4683379 ? r4683393 : r4683404;
        double r4683406 = r4683374 ? r4683377 : r4683405;
        return r4683406;
}

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. Taylor expanded around -inf 2.1

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
    5. 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}}\]

    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. 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{1}{2 \cdot a} \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \end{array}\]

Reproduce

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